【问题标题】:CloudWatch Rule won't trigger Lambda Function, even with correct permissionsCloudWatch 规则不会触发 Lambda 函数,即使具有正确的权限
【发布时间】:2021-03-12 02:09:01
【问题描述】:

我正在尝试使用 BOTO3 创建规则,但即使这些规则针对 lambda 函数,它仍然根本不会触发它们。

可以触发规则但每次调用都失败。

【问题讨论】:

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


    【解决方案1】:

    当您以编程方式创建 CloudWatch Event Rules 时,您需要添加必要的权限以及何时允许 CloudWatch 调用您的 lambda。

    以下是添加到 lambda 以允许名为 mycustomrule 的 cloudwatch 事件规则调用名为 mynode 的 lambda 的基于资源的策略

    {
      "Version": "2012-10-17",
      "Id": "default",
      "Statement": [
        {
          "Sid": "AWSEvents_mycustomrule_Id6319267638851",
          "Effect": "Allow",
          "Principal": {
            "Service": "events.amazonaws.com"
          },
          "Action": "lambda:InvokeFunction",
          "Resource": "arn:aws:lambda:us-east-1:12345678990:function:mynode",
          "Condition": {
            "ArnLike": {
              "AWS:SourceArn": "arn:aws:events:us-east-1:12345678990:rule/mycustomrule"
            }
          }
        }
      ]
    }
    

    由于您没有提供有关正在发生的事情的太多信息,因此这是我从您的帖子中的第一个猜测。

    Tutorial: Schedule AWS Lambda Functions Using CloudWatch Events

    【讨论】:

    • 这究竟是如何添加到 lambda 中的?当尝试添加基于资源的策略时,我得到了一个表单,而不是我可以将 JSON 输入到的表单
    • @peadarx1 不确定您如何为 lambda 添加触发器,在您提到的 OP 中它是通过 boto3 完成的,但现在您提到了 console 的行为。如果您检查我在答案中添加的链接,您可以添加必要的权限,这将通过 CLI 产生类似上面的内容,如附件文档中所述。如果您通过console 进行操作,您可以通过您获得的表格或转到cloudwatch 服务进行操作,它会像这样询问您CloudWatch Events will add necessary permissions for target(s) so they can be invoked when this rule is triggered.
    • imgur.com/a/SXR8JU1 这是我目前的政策文件。这和你的不一样吗?
    • @peadarx1 是的,这是正确的策略。顺便说一句,尽量不要暴露您的帐户相关信息。
    • 我真的不明白为什么它会像这样调用失败。当我在线手动添加触发器时,它可以正常工作,但以编程方式每次都会失败
    猜你喜欢
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 2019-09-05
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多