我正在使用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
的工作状态。
但是令人惊讶的是,在该事件响应中没有提及“转录”作业名称。
这是一个例子:
FAILED
这是我认为我的应用程序正常工作的唯一方式,即通过Amazon Transcribe服务调用转录作业,然后在完成后,点击我的API以更新应用程序中的必要模型,但未获取Transcribe作业名称,它将无法正常工作。
任何建议表示赞赏。
答案 0 :(得分:1)
根据您更新的问题,我怀疑您的问题实际上在这里:
var post_data = querystring.stringify(
event
);
Querystring不支持嵌套对象,例如cloudwatch事件的detail
块。更多信息:
因此,尽管您没有在问题中指出它,但我怀疑您显示的是该lambda帖子所收到的响应,而不是从AWS Transcribe收到的原始响应/事件。
也许代替查询字符串:
var post_data = JSON.stringify(event);