亚马逊ElasticTranscoder,如何等待工作完成?

时间:2017-06-29 18:04:36

标签: amazon-web-services amazon-s3 aws-lambda amazon-elastic-transcoder

我在node.js事件中触发lambda S3Elastic Transcoder作业的启动方式如下:

let AWS = require('aws-sdk');
let s3 = new AWS.S3({apiVersion: '2012–09–25'});
let eltr = new AWS.ElasticTranscoder({apiVersion: '2012–09–25', region: 'us-west-2'});

exports.handler = (event, context, callback) => {
    let pipelineId = 'keystone';
    let bucket = event.Records[0].s3.bucket.name;
    let key = event.Records[0].s3.object.key;

    let etParams = {
        PipelineId: pipelineId,
        Input: {
            Key: key,
            FrameRate: 'auto',
            Resolution: 'auto',
            AspectRatio: 'auto',
            Interlaced: 'auto',
            Container: 'auto'
        },
        Outputs: [{
            Key: key,
            PresetId: '1351620000001-000010'
        }]
    };

    eltr.createJob(etParams, function(err, data) {
        if (err) {
            console.log("ET error", err, err.stack);
        } else {
            console.log("Calling waitFor for Job Id:", data.Job.Id);
            eltr.waitFor("jobComplete", {Id: data.Job.Id}, function(err, data) {
                if (err) {
                    console.log("ET waitFor Error", err, err.stack);
                } else {
                    console.log("ET Job finished", data, data.Job.Output.Key);
                }
            });
        }   
    });
};

transcoding进程times out

START RequestId: 82c0a1ce-5cf3-11e7-81aa-a3362402de83 Version: $LATEST

2017-06-29T17:51:03.509Z    82c0a1ce-5cf3-11e7-81aa-a3362402de83    Creating Job { PipelineId: 'keystone',
Input: 
{ Key: 'f04d62af47.mp4',
FrameRate: 'auto',
Resolution: 'auto',
AspectRatio: 'auto',
Interlaced: 'auto',
Container: 'auto' },
Outputs: 
[ { Key: 'f04d62af47.mp4',
PresetId: '1351620000001-000010' } ] }

2017-06-29T17:51:04.829Z    82c0a1ce-5cf3-11e7-81aa-a3362402de83    Calling waitFor for Job Id: 1498758664450-jxhdlx

END RequestId: 82c0a1ce-5cf3-11e7-81aa-a3362402de83

REPORT RequestId: 82c0a1ce-5cf3-11e7-81aa-a3362402de83  Duration: 3001.65 ms    Billed Duration: 3000 ms Memory Size: 128 MB    Max Memory Used: 37 MB  

2017-06-29T17:51:06.260Z 82c0a1ce-5cf3-11e7-81aa-a3362402de83 Task timed out after 3.00 seconds

上述日志输出重复3次(lambda的三次尝试?)

我确定我错过了什么,有人可以指出错误吗?

1 个答案:

答案 0 :(得分:1)

对AWS Lambda的所有调用必须在300秒内完成执行。默认超时为3秒,但您可以将超时设置为1到300秒之间的任何值。

在你的两次重试猜想中,你是对的。如果AWS Lambda无法完全处理异步事件,那么它将自动重试调用两次,重试之间会有延迟。