如何将 AWS Amplify 的 Storage.put 配置为使用传输加速的 s3 存储桶域?



我已经使用Cloudformation启用了S3传输加速。

文档中说,启用后,开发人员需要指示他们的客户使用新的加速域名。

例如,从mybucket.s3.us-east-1.amazonaws.combucketname.s3-accelerate.amazonaws.com

然而,AWS Amplify的Storage.put方法使用的是在配置过程中定义的bucket名称,如下所示:

Amplify.configure({
Storage: {
AWSS3: {
bucket: AWS_BUCKET_NAME,
region: AWS_REGION
}
}
})

由于这里没有域名,只有一个bucket名称,如何设置它来访问加速端点?

在我看来,Amplify Storage不支持这种开箱即用的配置,所以如果你想使用Transfer Acceleration,你需要使用标准的S3客户端进行javascript,比如so:

// obtain credentials from cognito to make uploads to s3...
let albumBucketName = "BUCKET_NAME";
let bucketRegion = "REGION";
let IdentityPoolId = "IDENTITY_POOL_ID";
AWS.config.update({
region: bucketRegion,
credentials: new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId
})
});
// configure the S3 client to use accelerate - note useAccelerateEndpoint flag
const options = {
signatureVersion: 'v4',
region: bucketRegion, // same as your bucket
endpoint: new AWS.Endpoint('your-bucket-name.s3-accelerate.amazonaws.com'),    
useAccelerateEndpoint: true,  
};
const s3 = new AWS.S3(options);
// then use the client...
// ...

AWS.S3类参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

我也在努力解决这个问题,现在偶然发现用Storage.put:启用了这个功能

  1. 指定您的正常bucket名称,就像您通常会
  2. 在Storage.put的options对象中,设置useAccelerateEndpoint:true(我从上面的答案中得到(

如果你进行测试,并查看Chrome开发工具的网络控制台,你会发现Amplify为加速端点指定了正确的路径。

最新更新