[英]How to configure AWS Amplify's Storage.put to use a transfer accelerated s3 bucket domain?
我已经使用Cloudformation启用了S3 传输加速。
文档说,启用后,开发人员需要让他们的客户使用新的加速域名。
例如从mybucket.s3.us-east-1.amazonaws.com
到bucketname.s3-accelerate.amazonaws.com
。
但是,AWS Amplify 的 Storage.put 方法使用的是在配置期间定义的存储桶名称,如下所示:
Amplify.configure({
Storage: {
AWSS3: {
bucket: AWS_BUCKET_NAME,
region: AWS_REGION
}
}
})
既然这里没有域名,只有一个bucket名,那怎么设置成访问加速的endpoint呢?
在我看来,Amplify Storage 不支持这种开箱即用的配置,所以如果你想使用 Transfer Acceleration,你需要使用 javascript 的标准 S3 客户端,如下所示:
// 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...
// ...
class AWS.S3 的参考:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html
我也在为此苦苦挣扎,现在偶然发现使用 Storage.put 启用它:
如果您进行测试,并查看 Chrome 开发人员工具的网络控制台,您将看到 Amplify 为加速端点指定了正确的路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.