我正在将视频直接上传到AWS S3存储桶,但是即使是10秒钟的iPhone视频,上传似乎也很慢。我网站上的用户上传了一个视频。
步骤1:在服务器上创建createPresignedPost
const AWS = require('aws-sdk');
s3 = new AWS.S3({apiVersion: '2006-03-01'});
AWS.config.update({keys, region});
var params = {
Bucket: 'bucket',
Fields: {
key: fileNameKey
},
Expires: expireTime,
Conditions: [
["content-length-range", 0, 500000000], // limit to 500 Mb
[ "eq", "$acl", "public-read" ]
]
};
这很好,我将presignedPostUrl发送回用户浏览器,然后用户从浏览器上传文件。步骤2:
let config = { headers: { 'Content-Type': 'multipart/form-data' } };
await axios.post(presignedPostUrl, formData, config)
视频上传正常,速度很慢。 60秒的视频需要26秒。我尝试在AWS控制台中启用AWS s3 Transfer acceleration,然后在步骤1中创建presignedPostUrl时对其进行初始化:
s3 = new AWS.S3({useAccelerateEndpoint: true, apiVersion: '2006-03-01'});
视频上传,但速度与原始上传速度相同。 60秒的iPhone视频需要30秒才能上传。
我可以正确设置吗?使用Cloudfront上传会更快吗?
答案 0 :(得分:0)
AWS文档说,对于小于1GB的文件,最好使用Amazon CloudFront的PUT / POST而不是S3 Transfer Acceleration。