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 StringACCELERATE_MODE_PROPERTYcom.amazonaws.services.s3.AmazonS3amazonS3static StringAWS_ID_PROPERTYstatic StringAWS_SECRET_PROPERTYstatic StringAWS_SESSION_TOKEN_PROPERTYstatic StringBUCKET_NAME_PROPERTYstatic StringBUCKET_PREFIX_PROPERTYstatic StringBUCKET_REGION_PROPERTYstatic StringBUCKET_SUB_DIRS_DEPTH_PROPERTYStringbucketNameStringbucketPrefixCloudFrontConfigurationcloudFrontstatic StringCONNECTION_MAX_PROPERTYAWS ClientConfiguration default 50static StringCONNECTION_RETRY_PROPERTYAWS ClientConfiguration default 3 (with exponential backoff)static StringCONNECTION_TIMEOUT_PROPERTYAWS ClientConfiguration default 50*1000 = 50sstatic com.amazonaws.services.s3.model.ObjectLockRetentionModeDEFAULT_RETENTION_MODEstatic StringDELIMITERstatic StringDIRECTDOWNLOAD_EXPIRE_PROPERTY_COMPATstatic StringDIRECTDOWNLOAD_PROPERTY_COMPATstatic StringDISABLE_PROXY_PROPERTYFramework property to disable usage of the proxy environment variables (nuxeo.http.proxy.*) for the connection to the S3 endpoint.static StringENDPOINT_PROPERTYstatic StringKEYSTORE_FILE_PROPERTYstatic StringKEYSTORE_PASS_PROPERTYstatic StringMETADATA_ADD_USERNAME_PROPERTYbooleanmetadataAddUsernamestatic longMINIMUM_UPLOAD_PART_SIZE_DEFAULTThe default value for the minimum upload part size.static StringMINIMUM_UPLOAD_PART_SIZE_PROPERTYThe Framework property to define the minimum upload part size.static StringMULTIPART_CLEANUP_DISABLED_PROPERTYDisable automatic abort of old multipart uploads at startup time.static StringMULTIPART_COPY_PART_SIZE_CONFIGURATION_PROPERTYThe deprecated configuration property to define the multipart copy part size, for backward compatibility.static longMULTIPART_COPY_PART_SIZE_DEFAULTThe default value for the multipart copy part size.static StringMULTIPART_COPY_PART_SIZE_PROPERTYThe Framework property to define the multipart copy part size.static longMULTIPART_COPY_THRESHOLD_DEFAULTThe default value for the multipart copy threshold.static StringMULTIPART_COPY_THRESHOLD_PROPERTYThe Framework property to define the multipart copy threshold.static longMULTIPART_UPLOAD_THRESHOLD_DEFAULTThe default value for the multipart upload threshold.static StringMULTIPART_UPLOAD_THRESHOLD_PROPERTYThe Framework property to define the multipart upload threshold.protected booleanpathSeparatorIsBackslashIs backslash "/" the path separator.protected PathStrategypathStrategyThe path strategy according to the sub directory depth configuration.static StringPATHSTYLEACCESS_PROPERTYstatic StringPRIVKEY_ALIAS_PROPERTYstatic StringPRIVKEY_PASS_PROPERTYcom.amazonaws.services.s3.model.ObjectLockRetentionModeretentionModeThe retention mode to use when setting the retention on an object.booleans3RetentionEnabledIs Object Lock feature enabled at s3 level.static StringSERVERSIDE_ENCRYPTION_KMS_KEY_PROPERTYstatic StringSERVERSIDE_ENCRYPTION_PROPERTYStringserverSideKMSKeyIDstatic StringSOCKET_TIMEOUT_PROPERTYAWS ClientConfiguration default 50*1000 = 50sstatic StringSYSTEM_PROPERTY_PREFIXstatic intTRANSFER_MANAGER_THREAD_POOL_SIZE_DEFAULTThe default value for the transfer manager thread pool size.static StringTRANSFER_MANAGER_THREAD_POOL_SIZE_PROPERTYThe Framework property to define the transfer manager thread pool size.com.amazonaws.services.s3.transfer.TransferManagertransferManagerbooleanuseClientSideEncryptionstatic StringUSER_AGENT_PREFIX_PROPERTYstatic StringUSER_AGENT_SUFFIX_PROPERTYbooleanuseServerSideEncryption-
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 voidabortOldMultipartUploadsInternal()protected voidabortOldUploads()Aborts uploads that crashed and are older than 1 day.protected StringbucketKey(String key)Gets the bucket key for the given blob key taking into account the bucket prefix and the path strategy (sub directory depth).voidclose()protected com.amazonaws.services.s3.model.ObjectLockRetentionModecomputeBucketRetentionMode()Gets the s3 bucket's object lock default modeObjectLockRetentionMode#GOVERNANCEorObjectLockRetentionMode#COMPLIANCE.protected voidconfigureAccelerateMode(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)protected voidconfigurePathStyleAccess(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)protected voidconfigureRegionOrEndpoint(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)protected com.amazonaws.services.s3.transfer.TransferManagercreateTransferManager()protected com.amazonaws.services.s3.AmazonS3getAmazonS3(com.amazonaws.services.s3.AmazonS3Builder<?,?> s3Builder)protected com.amazonaws.auth.AWSCredentialsProvidergetAWSCredentialsProvider()protected StringgetBucketName()protected StringgetBucketPrefix()protected com.amazonaws.ClientConfigurationgetClientConfiguration()protected com.amazonaws.services.s3.model.EncryptionMaterialsgetEncryptionMaterials()static longgetLongProperty(String key, long defaultValue)static longgetMultipartCopyPartSize()protected com.amazonaws.services.s3.model.ObjectLockRetentionModegetRetentionMode()Deprecated.since 11.4, unusedprotected intgetSubDirsDepth()protected booleanisS3RetentionEnabled()Deprecated.since 2023.0, unusedprotected booleanparseDirectDownload()protected longparseDirectDownloadExpire()S3BlobStoreConfigurationwithNamespace(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#GOVERNANCEorObjectLockRetentionMode#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:
parseDirectDownloadin classCloudBlobStoreConfiguration
-
parseDirectDownloadExpire
protected long parseDirectDownloadExpire()
- Overrides:
parseDirectDownloadExpirein 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()
-
-