Amazon Transcribe事件上的CloudWatch事件触发器

问题描述 投票:1回答:1

[我正在使用Amazon Transcribe服务,并尝试获取CloudWatch Events来触发对我的API执行POST请求的Lambda函数。

这里是Lambda函数

var querystring = require('querystring');
var http = require('http');

exports.handler = function(event, context) {


    var post_data = querystring.stringify(
        event
    );

    // An object of options to indicate where to post to
    var post_options = {
        host: '193e561e.ngrok.io',
        port: '80',
        path: '/api/lambda',
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': Buffer.byteLength(post_data)
        }
    };

    // Set up the request
    var post_req = http.request(post_options, function(res) {
        res.setEncoding('utf8');
        res.on('data', function(chunk) {
            console.log('Response: ' + chunk);
            context.succeed();
        });
        res.on('error', function(e) {
            console.log("Got error: " + e.message);
            context.done(null, 'FAILURE');
        });

    });

    // post the data
    post_req.write(post_data);
    post_req.end();

}

我已将CloudWatch Events配置为侦听Amazon Transcribe服务,尤其是要更改为COMPLETEDFAILED的作业状态。

cloudwatch event trigger

但是令人惊讶的是,在该事件响应中没有提及转录作业名称。

这里是一个例子:

'version' => '0',
  'id' => '1fa5cca6-413f-4a0f-0ba2-66efa49c247e',
  'detail-type' => 'Transcribe Job State Change',
  'source' => 'aws.transcribe',
  'account' => '405723091079',
  'time' => '2019-11-19T19:04:25Z',
  'region' => 'eu-west-1',
  'detail' => NULL,

[这是我的应用程序能够正常工作的唯一方式,该应用程序通过Amazon Transcribe服务调用转录作业,然后在完成后,点击我的API来更新应用程序中所需的模型,但未获取Transcribe作业名称,它不起作用。

任何建议都会感激。

events aws-lambda jobs amazon-cloudwatch aws-transcribe
1个回答
0
投票

根据您更新的问题,我怀疑您的问题实际上在这里:

var post_data = querystring.stringify(
    event
);

查询字符串不支持嵌套对象,例如cloudwatch事件的detail块。更多信息:

因此,尽管您没有在问题中指出,但我怀疑您显示的是此lambda帖子的结果,而不是从AWS Transcribe收到的原始响应/事件。

也许代替查询字符串:

var post_data = JSON.stringify(event);
© www.soinside.com 2019 - 2024. All rights reserved.