CloudWatch Events在Amazon Transcribe事件上触发

时间:2019-11-19 16:32:58

标签: events aws-lambda jobs amazon-cloudwatch aws-transcribe

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

这是Lambda函数

tma

我已将CloudWatch Events配置为侦听Amazon Transcribe服务,尤其是侦听更改为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(); } COMPLETED的工作状态。

cloudwatch event trigger

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

这是一个例子:

FAILED

这是我认为我的应用程序正常工作的唯一方式,即通过Amazon Transcribe服务调用转录作业,然后在完成后,点击我的API以更新应用程序中的必要模型,但未获取Transcribe作业名称,它将无法正常工作。

任何建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

var post_data = querystring.stringify(
    event
);

Querystring不支持嵌套对象,例如cloudwatch事件的detail块。更多信息:

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

也许代替查询字符串:

var post_data = JSON.stringify(event);