加快AWS S3视频上传速度:Cloudfront还是Transfer加速?

时间:2019-10-30 12:49:32

标签: amazon-s3 aws-sdk amazon-cloudfront

我正在将视频直接上传到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上传会更快吗?

1 个答案:

答案 0 :(得分:0)

AWS文档说,对于小于1GB的文件,最好使用Amazon CloudFront的PUT / POST而不是S3 Transfer Acceleration。