File upload 使用put Upload而不是multipart将较大的文件上载到S3

File upload 使用put Upload而不是multipart将较大的文件上载到S3,file-upload,amazon-web-services,amazon-s3,File Upload,Amazon Web Services,Amazon S3,我想上传和编码视频文件使用S3,弹性转码器和lambda功能 Lambda功能和设置工作正常,但当我上传视频文件MP4时,它会自动“多部分”上传,因为它大于5mb。 也许正因为如此,弹性转码器上的作业进程运行了三次。所以我每次上传都要运行两次不必要的作业,第一个作业成功地编码了视频文件 有没有办法避免这种情况,比如强制上传大约60mb的大文件,而不是使用“multipart”而是“put”功能?我更喜欢在非工程师的浏览器控制台上完成这项工作 这是lambda函数为ElasticTranscode

我想上传和编码视频文件使用S3,弹性转码器和lambda功能

Lambda功能和设置工作正常,但当我上传视频文件MP4时,它会自动“多部分”上传,因为它大于5mb。 也许正因为如此,弹性转码器上的作业进程运行了三次。所以我每次上传都要运行两次不必要的作业,第一个作业成功地编码了视频文件

有没有办法避免这种情况,比如强制上传大约60mb的大文件,而不是使用“multipart”而是“put”功能?我更喜欢在非工程师的浏览器控制台上完成这项工作

这是lambda函数为ElasticTranscoder提交作业。当我上传视频文件时,“put”不起作用,但“multipart”事件起作用Put事件适用于较小的文件,如图像或txt,仅用于测试

console.log('Loading event');
var aws = require('aws-sdk');
var s3 = new aws.S3({apiVersion: '2006-03-01'});
var ets = new aws.ElasticTranscoder({apiVersion: '2012-09-25', region: 'us-west-2'});

exports.handler = function(event, context) {
   console.log('Received event:');
   console.log(JSON.stringify(event, null, '  '));
   var bucket = event.Records[0].s3.bucket.name;
   var key = event.Records[0].s3.object.key;
   var fileName = key.split('.')[0];
   s3.getObject({Bucket:bucket, Key:key},
      function(err,data) {
        if (err) {
           console.log('error getting object ' + key + ' from bucket ' + bucket +
           '. Make sure they exist and your bucket is in the same region as this function.');
       context.done('error','error getting file'+err);
    } else {
        console.log("### JOB KEY ### " + key);
        ets.createJob({
            PipelineId: '***',
            Input: {
                Key: key,
                FrameRate: 'auto',
                Resolution: 'auto',
                AspectRatio: 'auto',
                Interlaced: 'auto',
                Container: 'auto',
            },
            Output: {
                Key: fileName + '.m3u8',
                ThumbnailPattern: fileName + '-thumbs-{count}',
                PresetId: '1351620000001-200035',
                Rotate: 'auto'
            }
        }, function(error, data) {
            if(error) {
                console.log(error);
            } else {
                console.log('Job submitted');
            }
        });
    }
  }
);

})

也许正因为如此也许。。。但你应该更彻底地调查。在bucket上启用日志记录,并查看实际发生的事件数。你现在上传的怎么样?使用控制台?谢谢@Michael sqlbot。我现在从控制台上传并运行lambda对视频文件进行编码。