File upload 使用put Upload而不是multipart将较大的文件上载到S3
我想上传和编码视频文件使用S3,弹性转码器和lambda功能 Lambda功能和设置工作正常,但当我上传视频文件MP4时,它会自动“多部分”上传,因为它大于5mb。 也许正因为如此,弹性转码器上的作业进程运行了三次。所以我每次上传都要运行两次不必要的作业,第一个作业成功地编码了视频文件 有没有办法避免这种情况,比如强制上传大约60mb的大文件,而不是使用“multipart”而是“put”功能?我更喜欢在非工程师的浏览器控制台上完成这项工作 这是lambda函数为ElasticTranscoder提交作业。当我上传视频文件时,“put”不起作用,但“multipart”事件起作用Put事件适用于较小的文件,如图像或txt,仅用于测试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
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对视频文件进行编码。