从Lambda创建AWS Transcoder作业 [英] Create AWS Transcoder job from Lambda

查看:119
本文介绍了从Lambda创建AWS Transcoder作业的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个Lambda函数,每次创建新的s3对象时都会调用该函数。我正在尝试检索对象,然后创建一个新的Transcoder作业来更改视频质量。但是永远不会创建代码转换器作业。 正在创建工作。...出现,但创建的工作从未出现在我的日志中。

I've created a Lambda function that is called with every new s3 object creation. I'm trying to retrieve the object, then create a new Transcoder job that alters the video quality. But the transcoder job is never created. creating job.... shows up but job created never appears in my logs.

教程。

我的Lambda函数:

My Lambda Function:

 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();
     });
 };

在日志中,我得到


加载功能

Loading function

START RequestId:xxx版本:$ LATEST

START RequestId: xxx Version: $LATEST

加载代码转换器

END RequestId:xxx

END RequestId: xxx

REPORT RequestId:xxx

REPORT RequestId: xxx

任务在3.00秒后超时

Task timed out after 3.00 seconds

从不调用创建作业块。

推荐答案

在VPC下拉菜单下,我必须选择无VPC才能正常工作-即一旦我更改了它们,就让它在默认系统管理的VPC中运行立即工作。

Under the VPC drop down i had to choose "No VPC" for this to work - i.e. let it run inside the "default system-managed VPC", once I changed that they worked instantly.

这篇关于从Lambda创建AWS Transcoder作业的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆