Adding a new S3 store to the S3MultipleBuckets subsystem - Adding a new S3 store to the S3MultipleBuckets subsystem - Alfresco - Alfresco Content Connector for AWS S3 - Alfresco/Alfresco-Content-Connector-for-AWS-S3/6.1/Alfresco-Content-Connector-for-AWS-S3/Configure/Configuring-Content-Connector-for-AWS-S3/Using-multiple-buckets/Adding-a-new-S3-store-to-the-S3MultipleBuckets-subsystem - 6.1 - 6.1

Alfresco Content Connector for AWS S3

Platform
Alfresco
Product
Alfresco Content Connector for AWS S3
Release
6.1
License
ft:lastPublication
2026-01-23T13:23:45.694000
ft:locale
en-US

These steps describe how to add a new S3 store starting from the S3MultipleBuckets subsystem sample.

  1. Locate the file s3-mb-contentstore-context.xml in folder:
    $CATALINA_HOME/shared/classes/alfresco/extension/subsystems/ContentStore/S3MultipleBuckets
    					
  2. Duplicate the Store 2 section, and replace store2. with store3.
    <bean id="store2.s3Adapter"class="org.alfresco.integrations.connector.AmazonS3ServiceAdapter"init-method="init">
        <property name="accessKey" value="${connector.s3.store2.accessKey}" />
        <property name="secretKey" value="${connector.s3.store2.secretKey}" />
        <property name="bucketName" value="${connector.s3.store2.bucketName}" />
        <property name="bucketRegion" value="${connector.s3.store2.bucketRegion}" />
        <property name="encryption" value="${connector.s3.store2.encryption}" />
        <property name="abortIncompleteMultipartUploadDays" value="${connector.s3.store2.abortIncompleteMultipartUploadDays}" />
        <property name="autoLowerCaseBucketName" value="${s3.store2.autoLowerCaseBucketName}" />
        <property name="awsKmsKeyId" value="${connector.s3.store2.awsKmsKeyId}" />
        <property name="endpoint" value="${connector.s3.store2.endpoint}" />
        <property name="clientConfiguration" ref="s3ClientConfiguration"/>
            
        <property name="tagName" value="${connector.s3.store2.tagName}" />
        <property name="tagValue" value="${connector.s3.store2.tagValue}" />
    </bean>
            
    <bean id="store2.s3ContentStore" class="org.alfresco.integrations.connector.TenantS3ContentStore" depends-on="store2.s3Adapter">
        <property name="useTenantDomainInPath" value="${s3.store2.useTenantDomainInPath}" />
        <property name="contentRoot" value="${dir.s3.contentstore}" />
        <property name="serviceAdapter" ref="store2.s3Adapter"/>
        <property name="nodeService" ref="nodeService" />
        <property name="defaultRootDir" value="${dir.s3.contentstore}" />
        
        <!-- Force the contentStore to use the prefix, otherwise the files would end up in the root of bucket -->
        <property name="useContentRootInPath" value="${s3.store2.useContentRootInPath}"/>
        <property name="objNameSuffix" value="${connector.s3.store2.objectNameSuffix}" />
        <property name="objNamePrefix" value="${connector.s3.store2.objectNamePrefix}" />
        <property name="storeProtocol" value="${connector.s3.store2.storeProtocol}"/>
        <!-- if true put all files into tenant root folder ! -->
        <property name="flatRoot" value="${s3.flatRoot}" />
    </bean>
    					
  3. Add the new store to the Store Selector Content Store.

    For example:

    <entrykey="s3ContentStore3">
        <ref bean="store3.s3ContentStore"/>
    </entry>
    					
  4. Locate the file s3-mb-contentstore.properties in folder:
    $CATALINA_HOME/shared/classes/alfresco/extension/subsystems/ContentStore/S3MultipleBuckets
    					
  5. Duplicate the Store 2 section, and replace the content as described in the sub-steps below:
    connector.s3.store2.accessKey=${connector.s3.accessKey}
    connector.s3.store2.secretKey=${connector.s3.secretKey}
    connector.s3.store2.bucketName=
    connector.s3.store2.bucketRegion=
        
    connector.s3.store2.encryption=${connector.s3.encryption}
    connector.s3.store2.awsKmsKeyId=
        
    connector.s3.store2.endpoint=
        
    connector.s3.store2.abortIncompleteMultipartUploadDays=${connector.s3.abortIncompleteMultipartUploadDays}
    s3.store2.autoLowerCaseBucketName=${s3.autoLowerCaseBucketName}
        
    s3.store2.useTenantDomainInPath=${s3.useTenantDomainInPath}
    s3.store2.useContentRootInPath=${s3.useContentRootInPath}
        
    connector.s3.store2.objectNamePrefix=
    connector.s3.store2.objectNameSuffix=
    connector.s3.store2.storeProtocol=s3v2
    connector.s3.store2.tagName=
    connector.s3.store2.tagValue=
    					
    1. Replace connector.s3.store2 with connector.s3.store3.
    2. Replace s3.store2 with s3.store3.