Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated May 16, 2024

Extend S3 resources

For Amplify-generated S3 resources

Amplify Storage generates Amazon S3 resources to offer storage features. You can access the underlying Amazon S3 resources to further customize your backend configuration by using the AWS Cloud Developer Kit (AWS CDK).

Example - Enable Transfer Acceleration

The following is an example of how you would enable Transfer Acceleration on the bucket (CDK documentation). In order to enable Transfer Acceleration on the bucket, you will have to unwrap the L1 CDK construct from the L2 CDK construct like the following.

import * as s3 from 'aws-cdk-lib/aws-s3';
import { defineBackend } from '@aws-amplify/backend';
import { storage } from './storage/resource';
const backend = defineBackend({
storage
});
const s3Bucket = backend.storage.resources.bucket;
const cfnBucket = s3Bucket.node.defaultChild as s3.CfnBucket;
cfnBucket.accelerateConfiguration = {
accelerationStatus: "Enabled" // 'Suspended' if you want to disable transfer acceleration
}

Upload files using the accelerated S3 endpoint

You can use transfer acceleration by setting "useAccelerateEndpoint" to true in the corresponding pluginOptions for any of the following Storage APIs:

  • getUrl(key:options:)
  • downloadData(key:options:)
  • downloadFile(key:local:options:)
  • uploadData(key:data:options:)
  • uploadFile(key:local:options:)

For example, to upload a file using transfer acceleration:

let uploadTask = Amplify.Storage.uploadFile(
key: aKey,
local: aLocalFile,
options: .init(
pluginOptions: [
"useAccelerateEndpoint": true
]
)
)
let data = try await uploadTask.value

Read more about escape hatches in the CDK.