新しいs3オブジェクトを作成するたびに呼び出されるラムダ関数を作成しました。私はオブジェクトを取得しようとしている、ビデオ品質を変更する新しいトランスコーダジョブを作成します。しかし、トランスコーダジョブは決して作成されません。 creating job....
が表示されますが、job created
はログに記録されません。ラムダからAWSトランスコーダジョブを作成
オフオフthisチュートリアル。
マイラムダ関数:
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();
});
};
私はそれが私のラムダの役割とは何かを持っているかもしれないと思ったが、私はすべてのものが良いですかなり確信しています。クラウドとトランスコーダー:createJob
アクセス。 thisチュートリアルに変更
{
"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": "*"
}
]
}
EDIT 。 HERESに新しいコード私は
ロード機能
START RequestId取得ログで
'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(); }); };
:XXXバージョン:$ LATEST
ロードトランスコーダ
ENDをRequestId:XXX
REPORTのRequestId:タスクは3.00秒
後にタイムアウトになりましたxxxの
作成ジョブブロックが呼び出されることはありません。
Lambdaログを機密情報なしで投稿できますか?また、私は[このチュートリアル](http://fartashh.github.io/post/serverless-approach-to-transcode-media/)のコードを使用し、いくつかの調整を行いました。 – manuel
@manuelは自分のコードをそのチュートリアルに変更しました。まだ何も起こらない – Peter
ロールにはElastic Transcoderジョブを作成する権限がありますか?私のチュートリアルのコードを使って、少なくともより明確なエラーログを取得する必要がありました。 – manuel