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.0/Alfresco-Content-Connector-for-AWS-S3/Alfresco-Content-Connector-for-AWS-S3/Configure/Using-multiple-buckets/Adding-a-new-S3-store-to-the-S3MultipleBuckets-subsystem - 6.0

Alfresco Content Connector for AWS S3

Platform
Alfresco
Product
Alfresco Content Connector for AWS S3
Release
6.0
ft:lastPublication
2026-05-06T14:41:07.251000
ft:locale
en-US
ArchiveStatus
Archived

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/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:

    <entry key="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/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.