【发布时间】:2019-10-30 12:49:32
【问题描述】:
我正在将视频直接上传到 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 上传会更快吗?
【问题讨论】:
标签: amazon-s3 aws-sdk amazon-cloudfront