当前位置: 首页 > 知识库问答 >
问题:

CloudWatch事件触发Amazon Transbe事件

狄誉
2023-03-14

我正在使用Amazon Transcripbe服务,并试图让CloudWatch事件激发一个Lambda函数,该函数执行对我的API的POST请求。

下面是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事件配置为监听Amazon Transcripbe服务,特别是监听作业状态更改为completedfailed

'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,

这是我认为我的应用程序工作的唯一方式,转录作业是通过亚马逊转录服务调用的,然后当它完成时,点击我的API来更新我的应用程序中必要的模型,但如果没有获得转录作业名称,它就不会工作。

任何建议都很感激。

共有1个答案

杨雪松
2023-03-14

根据你最新的问题,我怀疑你的问题实际上是在这里:

var post_data = querystring.stringify(
    event
);

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

  • https://github.com/sindresorhus/query-string#user-content-nesting
var post_data = JSON.stringify(event);
 类似资料:
  • 触发AWS Lambda函数时遇到问题。 当我单击Test时,该函数工作得非常好,但我创建了一个新的计划规则,该规则每分钟触发Lambda函数。它工作一次,然后再也不会工作了。我还尝试使用Cron,结果相同。 日志应输出打印功能,但它们会读取以下内容: 我单击了“CloudWatch Events将为目标添加必要的权限,以便在触发此规则时调用它们”,所以我怀疑我的权限不是问题。 顺便说一句,我已经

  • 我部署了一个用Python2编写的服务。7使用AWS Lambda,它是关于从一些页面提取数据并将结果发送到web应用程序。该服务由AWS CloudWatch事件触发(固定速率为5分钟)。 但是,我发现有时服务会一次触发两次。我得到这个是因为有两个日志流打印了相同的数据和结果,但具有不同的Request estID。并且数据库有重复的数据,这表明两者都成功工作。看起来服务几乎无缘无故地同时触发了

  • 使用mui.trigger()方法可以动态触发特定DOM元素上的事件。 .trigger( element , event , data ) element Type: Element 触发事件的DOM元素 event Type: String 事件名字,例如:'tap'、'swipeleft' data Type: Object 需要传递给事件的业务参数 示例 自动触发按钮的点击事件: var

  • 我创建了一个AWS Lambda函数,并在Cloudwatch中创建了一个计划事件规则,每5分钟触发一次:

  • 问题内容: 我的整个项目都使用(Bluebird)Promises,但是有一个使用EventEmitter的特定库。 我想要实现以下目标: 我在Promises链中读了EventEmitter的答案。这给了我一种执行’connect’事件的回调的方法。这是我到目前为止所到之处 现在如何进一步链接“ eventB”? 问题答案: 我假设您想为每个事件做不同的事情。即使由的动作触发,您也可以将其视为另

  • 问题内容: 我有3个文件: js_json.js->用于我的json代码 javascript.js->用于我的javascript函数 index.php 这里的代码为: 这是我的代码: 这里的代码: 我的问题是: 当我单击链接“ Hola Test 1”时,它将起作用并显示消息。问题是,在单击选择选项之后,出现了链接“ Hola Test”,然后单击该链接(“ Hola Test”),该消息没