Package org.nuxeo.ecm.blob.s3
Class S3BlobStoreConfiguration
- java.lang.Object
-
- org.nuxeo.ecm.core.blob.PropertyBasedConfiguration
-
- org.nuxeo.ecm.core.blob.AbstractBlobStoreConfiguration
-
- org.nuxeo.ecm.blob.CloudBlobStoreConfiguration
-
- org.nuxeo.ecm.blob.s3.S3BlobStoreConfiguration
-
public class S3BlobStoreConfiguration extends CloudBlobStoreConfiguration
Blob storage configuration in S3.- Since:
- 11.1
-
-
Field Summary
Fields Modifier and Type Field Description static String
ACCELERATE_MODE_PROPERTY
com.amazonaws.services.s3.AmazonS3
amazonS3
static String
AWS_ID_PROPERTY
static String
AWS_SECRET_PROPERTY
static String
AWS_SESSION_TOKEN_PROPERTY
static String
BUCKET_NAME_PROPERTY
static String
BUCKET_PREFIX_PROPERTY
static String
BUCKET_REGION_PROPERTY
static String
BUCKET_SUB_DIRS_DEPTH_PROPERTY
String
bucketName
String
bucketPrefix
CloudFrontConfiguration
cloudFront
static String
CONNECTION_MAX_PROPERTY
AWS ClientConfiguration default 50static String
CONNECTION_RETRY_PROPERTY
AWS ClientConfiguration default 3 (with exponential backoff)static String
CONNECTION_TIMEOUT_PROPERTY
AWS ClientConfiguration default 50*1000 = 50sstatic com.amazonaws.services.s3.model.ObjectLockRetentionMode
DEFAULT_RETENTION_MODE
static String
DELIMITER
static String
DIRECTDOWNLOAD_EXPIRE_PROPERTY_COMPAT
static String
DIRECTDOWNLOAD_PROPERTY_COMPAT
static String
DISABLE_PROXY_PROPERTY
Framework property to disable usage of the proxy environment variables (nuxeo.http.proxy.*
) for the connection to the S3 endpoint.static String
ENDPOINT_PROPERTY
static String
KEYSTORE_FILE_PROPERTY
static String
KEYSTORE_PASS_PROPERTY
static String
METADATA_ADD_USERNAME_PROPERTY
boolean
metadataAddUsername
static long
MINIMUM_UPLOAD_PART_SIZE_DEFAULT
The default value for the minimum upload part size.static String
MINIMUM_UPLOAD_PART_SIZE_PROPERTY
The Framework property to define the minimum upload part size.static String
MULTIPART_CLEANUP_DISABLED_PROPERTY
Disable automatic abort of old multipart uploads at startup time.static String
MULTIPART_COPY_PART_SIZE_CONFIGURATION_PROPERTY
The deprecated configuration property to define the multipart copy part size, for backward compatibility.static long
MULTIPART_COPY_PART_SIZE_DEFAULT
The default value for the multipart copy part size.static String
MULTIPART_COPY_PART_SIZE_PROPERTY
The Framework property to define the multipart copy part size.static long
MULTIPART_COPY_THRESHOLD_DEFAULT
The default value for the multipart copy threshold.static String
MULTIPART_COPY_THRESHOLD_PROPERTY
The Framework property to define the multipart copy threshold.static long
MULTIPART_UPLOAD_THRESHOLD_DEFAULT
The default value for the multipart upload threshold.static String
MULTIPART_UPLOAD_THRESHOLD_PROPERTY
The Framework property to define the multipart upload threshold.protected boolean
pathSeparatorIsBackslash
Is backslash "/" the path separator.protected PathStrategy
pathStrategy
The path strategy according to the sub directory depth configuration.static String
PATHSTYLEACCESS_PROPERTY
static String
PRIVKEY_ALIAS_PROPERTY
static String
PRIVKEY_PASS_PROPERTY
com.amazonaws.services.s3.model.ObjectLockRetentionMode
retentionMode
The retention mode to use when setting the retention on an object.boolean
s3RetentionEnabled
Is Object Lock feature enabled at s3 level.static String
SERVERSIDE_ENCRYPTION_KMS_KEY_PROPERTY
static String
SERVERSIDE_ENCRYPTION_PROPERTY
String
serverSideKMSKeyID
static String
SOCKET_TIMEOUT_PROPERTY
AWS ClientConfiguration default 50*1000 = 50sstatic String
SYSTEM_PROPERTY_PREFIX
static int
TRANSFER_MANAGER_THREAD_POOL_SIZE_DEFAULT
The default value for the transfer manager thread pool size.static String
TRANSFER_MANAGER_THREAD_POOL_SIZE_PROPERTY
The Framework property to define the transfer manager thread pool size.com.amazonaws.services.s3.transfer.TransferManager
transferManager
boolean
useClientSideEncryption
static String
USER_AGENT_PREFIX_PROPERTY
static String
USER_AGENT_SUFFIX_PROPERTY
boolean
useServerSideEncryption
-
Fields inherited from class org.nuxeo.ecm.blob.CloudBlobStoreConfiguration
cachingConfiguration, DEFAULT_DIRECTDOWNLOAD_EXPIRE, DIGEST_ALGORITHM_PROPERTY, digestConfiguration, directDownload, DIRECTDOWNLOAD_EXPIRE_PROPERTY, DIRECTDOWNLOAD_PROPERTY, directDownloadExpire
-
Fields inherited from class org.nuxeo.ecm.core.blob.AbstractBlobStoreConfiguration
namespace
-
Fields inherited from class org.nuxeo.ecm.core.blob.PropertyBasedConfiguration
properties, systemPropertyPrefix
-
-
Constructor Summary
Constructors Constructor Description S3BlobStoreConfiguration(Map<String,String> properties)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
abortOldMultipartUploadsInternal()
protected void
abortOldUploads()
Aborts uploads that crashed and are older than 1 day.protected String
bucketKey(String key)
Gets the bucket key for the given blob key taking into account the bucket prefix and the path strategy (sub directory depth).void
close()
protected com.amazonaws.services.s3.model.ObjectLockRetentionMode
computeBucketRetentionMode()
Gets the s3 bucket's object lock default modeObjectLockRetentionMode#GOVERNANCE
orObjectLockRetentionMode#COMPLIANCE
.protected void
configureAccelerateMode(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
protected void
configurePathStyleAccess(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
protected void
configureRegionOrEndpoint(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
protected com.amazonaws.services.s3.transfer.TransferManager
createTransferManager()
protected com.amazonaws.services.s3.AmazonS3
getAmazonS3(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
protected com.amazonaws.auth.AWSCredentialsProvider
getAWSCredentialsProvider()
protected String
getBucketName()
protected String
getBucketPrefix()
protected com.amazonaws.ClientConfiguration
getClientConfiguration()
protected com.amazonaws.services.s3.model.EncryptionMaterials
getEncryptionMaterials()
static long
getLongProperty(String key, long defaultValue)
static long
getMultipartCopyPartSize()
protected com.amazonaws.services.s3.model.ObjectLockRetentionMode
getRetentionMode()
Deprecated.since 11.4, unusedprotected int
getSubDirsDepth()
protected boolean
isS3RetentionEnabled()
Deprecated.since 2023.0, unusedprotected boolean
parseDirectDownload()
protected long
parseDirectDownloadExpire()
S3BlobStoreConfiguration
withNamespace(String ns)
Returns a copy of the S3BlobStoreConfiguration with a different namespace.-
Methods inherited from class org.nuxeo.ecm.core.blob.AbstractBlobStoreConfiguration
propertiesWithNamespace
-
Methods inherited from class org.nuxeo.ecm.core.blob.PropertyBasedConfiguration
getBooleanProperty, getIntProperty, getIntProperty, getLongProperty, getProperty, getProperty
-
-
-
-
Field Detail
-
SYSTEM_PROPERTY_PREFIX
public static final String SYSTEM_PROPERTY_PREFIX
- See Also:
- Constant Field Values
-
BUCKET_NAME_PROPERTY
public static final String BUCKET_NAME_PROPERTY
- See Also:
- Constant Field Values
-
BUCKET_PREFIX_PROPERTY
public static final String BUCKET_PREFIX_PROPERTY
- See Also:
- Constant Field Values
-
BUCKET_SUB_DIRS_DEPTH_PROPERTY
public static final String BUCKET_SUB_DIRS_DEPTH_PROPERTY
- See Also:
- Constant Field Values
-
BUCKET_REGION_PROPERTY
public static final String BUCKET_REGION_PROPERTY
- See Also:
- Constant Field Values
-
AWS_ID_PROPERTY
public static final String AWS_ID_PROPERTY
- See Also:
- Constant Field Values
-
AWS_SECRET_PROPERTY
public static final String AWS_SECRET_PROPERTY
- See Also:
- Constant Field Values
-
AWS_SESSION_TOKEN_PROPERTY
public static final String AWS_SESSION_TOKEN_PROPERTY
- See Also:
- Constant Field Values
-
CONNECTION_MAX_PROPERTY
public static final String CONNECTION_MAX_PROPERTY
AWS ClientConfiguration default 50- See Also:
- Constant Field Values
-
CONNECTION_RETRY_PROPERTY
public static final String CONNECTION_RETRY_PROPERTY
AWS ClientConfiguration default 3 (with exponential backoff)- See Also:
- Constant Field Values
-
CONNECTION_TIMEOUT_PROPERTY
public static final String CONNECTION_TIMEOUT_PROPERTY
AWS ClientConfiguration default 50*1000 = 50s- See Also:
- Constant Field Values
-
SOCKET_TIMEOUT_PROPERTY
public static final String SOCKET_TIMEOUT_PROPERTY
AWS ClientConfiguration default 50*1000 = 50s- See Also:
- Constant Field Values
-
KEYSTORE_FILE_PROPERTY
public static final String KEYSTORE_FILE_PROPERTY
- See Also:
- Constant Field Values
-
KEYSTORE_PASS_PROPERTY
public static final String KEYSTORE_PASS_PROPERTY
- See Also:
- Constant Field Values
-
SERVERSIDE_ENCRYPTION_PROPERTY
public static final String SERVERSIDE_ENCRYPTION_PROPERTY
- See Also:
- Constant Field Values
-
SERVERSIDE_ENCRYPTION_KMS_KEY_PROPERTY
public static final String SERVERSIDE_ENCRYPTION_KMS_KEY_PROPERTY
- See Also:
- Constant Field Values
-
PRIVKEY_ALIAS_PROPERTY
public static final String PRIVKEY_ALIAS_PROPERTY
- See Also:
- Constant Field Values
-
PRIVKEY_PASS_PROPERTY
public static final String PRIVKEY_PASS_PROPERTY
- See Also:
- Constant Field Values
-
ENDPOINT_PROPERTY
public static final String ENDPOINT_PROPERTY
- See Also:
- Constant Field Values
-
PATHSTYLEACCESS_PROPERTY
public static final String PATHSTYLEACCESS_PROPERTY
- See Also:
- Constant Field Values
-
ACCELERATE_MODE_PROPERTY
public static final String ACCELERATE_MODE_PROPERTY
- See Also:
- Constant Field Values
-
DIRECTDOWNLOAD_PROPERTY_COMPAT
public static final String DIRECTDOWNLOAD_PROPERTY_COMPAT
- See Also:
- Constant Field Values
-
DIRECTDOWNLOAD_EXPIRE_PROPERTY_COMPAT
public static final String DIRECTDOWNLOAD_EXPIRE_PROPERTY_COMPAT
- See Also:
- Constant Field Values
-
METADATA_ADD_USERNAME_PROPERTY
public static final String METADATA_ADD_USERNAME_PROPERTY
- See Also:
- Constant Field Values
-
MULTIPART_CLEANUP_DISABLED_PROPERTY
public static final String MULTIPART_CLEANUP_DISABLED_PROPERTY
Disable automatic abort of old multipart uploads at startup time.- Since:
- 11.1
- See Also:
- Constant Field Values
-
DELIMITER
public static final String DELIMITER
- See Also:
- Constant Field Values
-
MULTIPART_COPY_PART_SIZE_CONFIGURATION_PROPERTY
public static final String MULTIPART_COPY_PART_SIZE_CONFIGURATION_PROPERTY
The deprecated configuration property to define the multipart copy part size, for backward compatibility.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MULTIPART_COPY_PART_SIZE_PROPERTY
public static final String MULTIPART_COPY_PART_SIZE_PROPERTY
The Framework property to define the multipart copy part size.- See Also:
- Constant Field Values
-
MULTIPART_COPY_PART_SIZE_DEFAULT
public static final long MULTIPART_COPY_PART_SIZE_DEFAULT
The default value for the multipart copy part size.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MULTIPART_COPY_THRESHOLD_PROPERTY
public static final String MULTIPART_COPY_THRESHOLD_PROPERTY
The Framework property to define the multipart copy threshold.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MULTIPART_COPY_THRESHOLD_DEFAULT
public static final long MULTIPART_COPY_THRESHOLD_DEFAULT
The default value for the multipart copy threshold.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MULTIPART_UPLOAD_THRESHOLD_PROPERTY
public static final String MULTIPART_UPLOAD_THRESHOLD_PROPERTY
The Framework property to define the multipart upload threshold.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MULTIPART_UPLOAD_THRESHOLD_DEFAULT
public static final long MULTIPART_UPLOAD_THRESHOLD_DEFAULT
The default value for the multipart upload threshold.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MINIMUM_UPLOAD_PART_SIZE_PROPERTY
public static final String MINIMUM_UPLOAD_PART_SIZE_PROPERTY
The Framework property to define the minimum upload part size.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
MINIMUM_UPLOAD_PART_SIZE_DEFAULT
public static final long MINIMUM_UPLOAD_PART_SIZE_DEFAULT
The default value for the minimum upload part size.- Since:
- 2021.11
- See Also:
- Constant Field Values
-
TRANSFER_MANAGER_THREAD_POOL_SIZE_PROPERTY
public static final String TRANSFER_MANAGER_THREAD_POOL_SIZE_PROPERTY
The Framework property to define the transfer manager thread pool size.- Since:
- 2021.14
- See Also:
- Constant Field Values
-
TRANSFER_MANAGER_THREAD_POOL_SIZE_DEFAULT
public static final int TRANSFER_MANAGER_THREAD_POOL_SIZE_DEFAULT
The default value for the transfer manager thread pool size.- Since:
- 2021.14
- See Also:
- Constant Field Values
-
DISABLE_PROXY_PROPERTY
public static final String DISABLE_PROXY_PROPERTY
Framework property to disable usage of the proxy environment variables (nuxeo.http.proxy.*
) for the connection to the S3 endpoint.- Since:
- 11.1
- See Also:
- Constant Field Values
-
USER_AGENT_PREFIX_PROPERTY
public static final String USER_AGENT_PREFIX_PROPERTY
- Since:
- 2021.15
- See Also:
- Constant Field Values
-
USER_AGENT_SUFFIX_PROPERTY
public static final String USER_AGENT_SUFFIX_PROPERTY
- Since:
- 2021.15
- See Also:
- Constant Field Values
-
DEFAULT_RETENTION_MODE
public static final com.amazonaws.services.s3.model.ObjectLockRetentionMode DEFAULT_RETENTION_MODE
-
cloudFront
public final CloudFrontConfiguration cloudFront
-
amazonS3
public final com.amazonaws.services.s3.AmazonS3 amazonS3
-
transferManager
public final com.amazonaws.services.s3.transfer.TransferManager transferManager
-
bucketName
public final String bucketName
-
bucketPrefix
public final String bucketPrefix
-
useServerSideEncryption
public final boolean useServerSideEncryption
-
serverSideKMSKeyID
public final String serverSideKMSKeyID
-
useClientSideEncryption
public final boolean useClientSideEncryption
-
metadataAddUsername
public final boolean metadataAddUsername
-
s3RetentionEnabled
public final boolean s3RetentionEnabled
Is Object Lock feature enabled at s3 level.- Since:
- 2021.13
-
retentionMode
public final com.amazonaws.services.s3.model.ObjectLockRetentionMode retentionMode
The retention mode to use when setting the retention on an object.
-
pathStrategy
protected final PathStrategy pathStrategy
The path strategy according to the sub directory depth configuration.- Since:
- 2023.7
-
pathSeparatorIsBackslash
protected final boolean pathSeparatorIsBackslash
Is backslash "/" the path separator.- Since:
- 2023.7
-
-
Constructor Detail
-
S3BlobStoreConfiguration
public S3BlobStoreConfiguration(Map<String,String> properties) throws IOException
- Throws:
IOException
-
-
Method Detail
-
computeBucketRetentionMode
protected com.amazonaws.services.s3.model.ObjectLockRetentionMode computeBucketRetentionMode()
Gets the s3 bucket's object lock default modeObjectLockRetentionMode#GOVERNANCE
orObjectLockRetentionMode#COMPLIANCE
.If undefined, the retention mode of the Nuxeo platform is returned.
Returns null if object lock is not enabled on the bucket.
- Since:
- 2023.0
-
withNamespace
public S3BlobStoreConfiguration withNamespace(String ns) throws IOException
Returns a copy of the S3BlobStoreConfiguration with a different namespace.- Throws:
IOException
-
close
public void close()
-
getMultipartCopyPartSize
public static long getMultipartCopyPartSize()
- Since:
- 2021.11
-
getLongProperty
public static long getLongProperty(String key, long defaultValue)
- Since:
- 2021.11
-
parseDirectDownload
protected boolean parseDirectDownload()
- Overrides:
parseDirectDownload
in classCloudBlobStoreConfiguration
-
parseDirectDownloadExpire
protected long parseDirectDownloadExpire()
- Overrides:
parseDirectDownloadExpire
in classCloudBlobStoreConfiguration
-
getBucketName
protected String getBucketName()
-
bucketKey
protected String bucketKey(String key)
Gets the bucket key for the given blob key taking into account the bucket prefix and the path strategy (sub directory depth).- Since:
- 2023.7
-
getBucketPrefix
protected String getBucketPrefix()
-
getSubDirsDepth
protected int getSubDirsDepth()
-
getAWSCredentialsProvider
protected com.amazonaws.auth.AWSCredentialsProvider getAWSCredentialsProvider()
-
getClientConfiguration
protected com.amazonaws.ClientConfiguration getClientConfiguration()
-
getEncryptionMaterials
protected com.amazonaws.services.s3.model.EncryptionMaterials getEncryptionMaterials()
-
configurePathStyleAccess
protected void configurePathStyleAccess(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
-
configureRegionOrEndpoint
protected void configureRegionOrEndpoint(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
-
configureAccelerateMode
protected void configureAccelerateMode(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
-
getAmazonS3
protected com.amazonaws.services.s3.AmazonS3 getAmazonS3(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)
-
createTransferManager
protected com.amazonaws.services.s3.transfer.TransferManager createTransferManager()
-
getRetentionMode
@Deprecated protected com.amazonaws.services.s3.model.ObjectLockRetentionMode getRetentionMode()
Deprecated.since 11.4, unused
-
isS3RetentionEnabled
@Deprecated protected boolean isS3RetentionEnabled()
Deprecated.since 2023.0, unused
-
abortOldUploads
protected void abortOldUploads()
Aborts uploads that crashed and are older than 1 day.
-
abortOldMultipartUploadsInternal
protected void abortOldMultipartUploadsInternal()
-
-