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.