我创建了一个 Lambda 函数,每次创建新的 s3 对象时都会调用该函数。我正在尝试检索该对象,然后创建一个更改视频质量的新转码器作业。但是永远不会创建转码器作业。creating job....
出现但job created
从未出现在我的日志中。
离开本教程。
我的 Lambda 函数:
var aws = require('aws-sdk');
var elastictranscoder = new aws.ElasticTranscoder();
exports.handler = function(event, context) {
console.log('Got Video:', JSON.stringify(event, null, 2));
// Get the object from the event and show its content type
var key = event.Records[0].s3.object.key;
console.log('Key:', key);
var params = {
Input: {
Key: key
},
PipelineId: 'xxx',
OutputKeyPrefix: 'output/',
Outputs: [
{
Key: outputKey(basename(key),'mp4'),
PresetId: '1441222625682-nnthmh', // h264
},
{
Key: outputKey(basename(key),'webm'),
PresetId: '1441222599518-vt9jbu', // webm
}
]
};
console.log('creating job....');
elastictranscoder.createJob(params, function(err, data) {
console.log('job created');
if (err){
console.log('ERROR...',err, err.stack); // an error occurred
context.fail();
return;
}else{
console.log('created job successfully');
}
context.succeed();
});
};
我认为这可能与我的 Lambda 角色有关,但我很确定一切都很好。云和转码器:createJob
访问。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"elastictranscoder:Read*",
"elastictranscoder:List*",
"elastictranscoder:*Job",
"elastictranscoder:CreateJob",
"elastictranscoder:*Preset",
"s3:List*",
"sns:List*"
],
"Resource": "*"
}
]
}
编辑 更改为本教程。这是新代码
'use strict';
console.log('Loading function');
let aws = require('aws-sdk');
let s3 = new aws.S3({ apiVersion: '2006-03-01' });
let elastictranscoder = new aws.ElasticTranscoder();
function getFileName(path) {
return path.split('/').reverse()[0].split('.')[0];
}
exports.handler = (event, context, callback) => {
// const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
var params = {
Input: {
Key: key
},
PipelineId: 'xxx',
OutputKeyPrefix: 'files/',
Outputs: [
{
Key: getFileName(key),
PresetId: '1351620000001-200060', // hls
}
]
};
console.log('loading transcoder');
elastictranscoder.createJob(params, function(err, data) {
console.log('made job');
if (err){
console.log(err, err.stack); // an error occurred
context.fail();
return;
}
context.succeed();
});
};
在我得到的日志中
加载功能
开始请求 ID:xxx 版本:$LATEST
加载转码器
END RequestId: xxx
报告请求 ID:xxx
3.00 秒后任务超时
永远不会调用创建作业块。