【问题标题】:Adding CloudWatchEvents to AWS lambda function将 CloudWatchEvents 添加到 AWS lambda 函数
【发布时间】:2019-07-16 09:24:37
【问题描述】:

我有 2 个 AWS lambda 函数属于同一个帐户生产者和消费者函数。我希望生产者安排消费者在指定时间运行。当我在 CloudWatch Events 下检查时,正在创建事件,但未触发使用者。我正在使用这个link

生产者代码

var AWS = require('aws-sdk');

var cwevents = new AWS.CloudWatchEvents({apiVersion: '2015-10-07'});

var params_for_rule = {
  Name: 'DEMO_EVENT',
  ScheduleExpression: 'cron(0/3 * * * ? *)',
  State: 'ENABLED'  
};

var params_for_target = {
  Rule: 'DEMO_EVENT',
  Targets: [
    {
      Arn: 'consumer',
      Id: 'default',
    }
  ]
};

exports.handler = async (event, context, callback) => {

  const response = {
    statusCode: 200,
    body: JSON.stringify('Hello from Lambda!'),
  };

  cwevents.putRule(params_for_rule, function(err, data){
    if(err){
      console.log("Not Working");
    }
    else{
      console.log("Working");
      cwevents.putTargets(params_for_target, function(err, data){
        if(err){
          console.log("Not Working");
        }
        else{
          console.log("Working");
        }
      });
    }
  });
};

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-sdk amazon-cloudwatch


    【解决方案1】:

    在函数 putTargets 返回之前,您正在调用 callback
    您的callback 代码应在putTargets 成功返回后完成。

    cwevents.putRule(params_for_rule, function(err, data){
        if(err){
          console.log("Not Working");
        }
        else{
          console.log("Working");
          cwevents.putTargets(params_for_target, function(err, data){
            if(err){
              console.log("Not Working");
              callback(err, null);
            }
            else{
              console.log("Working");
              callback(null, response);
            }
          });
        }
      });
    

    【讨论】:

    • 您好,但正在成功创建规则和目标。只是我的消费者 Lambda 没有被触发
    【解决方案2】:

    对于要添加的云观看事件,我们需要使用 addPermission 方法添加某些权限。这里是 document.

    这里是示例代码。

    cwevents.putRule(params_for_rule, function(err, data){
        if(err){
          console.log("Not Working",data);
        }
        else{
          console.log("Working",data);
          lambda.addPermission(lambdaPermission, function(err, data){
            if(err){
              console.log(err);
            }
            else{
              console.log(data);
              cwevents.putTargets(params_for_target, function(err, data){
                if(err){
                  console.log("Not Working",data);
                }
                else{
                  console.log("Working",data);
                }
              });
            }
          }); 
        }
      });
    

    【讨论】:

      猜你喜欢
      • 2018-10-29
      • 2021-07-10
      • 1970-01-01
      • 2021-09-15
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      相关资源
      最近更新 更多