【问题标题】:Serverless add assumed role to allow cloudwatch to call lambda无服务器添加假定角色以允许 cloudwatch 调用 lambda
【发布时间】:2021-01-12 07:13:49
【问题描述】:

我试图让 cloudwatch 在 serverless.yml 中执行 lambda 函数。我可以通过 CLI 做到这一点。如何在 serverless.yml 中执行此操作?

CLI 命令from here:

aws lambda add-permission --function-name XXX --statement-id MyId --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:us-east-1:1232132323:rule/XXXX

我尝试了from here,它立即给出了部署错误:

functions:
  generateFile:
    handler: api/handler.generateFile
    tags:
      LiveOrTest: test
# to allow cloudwatch to invoke lambdas
resources:
  Resources:
    cleanLambdaPermission:
      Type: AWS::Lambda::Permission
      Properties:
        FunctionName:
          "Fn::GetAtt": [cleanLambdaFunction, Arn]
        Action: "lambda:InvokeFunction"
        Principal: "events.amazonaws.com"
        SourceArn: "*"

【问题讨论】:

    标签: amazon-web-services aws-lambda serverless-framework


    【解决方案1】:

    AWS::Lambda::Permission 中唯一明显的问题是ARN 不正确

    SourceArn: "*"
    

    您不能将 * 作为 ARN,而应该是:

    SourceArn: "arn:aws:events:us-east-1:1232132323:rule/XXXX"
    

    或者,您可以删除整个 SourceArn 属性。

    【讨论】:

    • 有没有办法使这个通用,即适用于所有 lambda,而不仅仅是“cleanLambdaFunction”?
    • @Rilcon42 遗憾的是没有。这是附加到单个功能的基于资源的策略。它类似于桶的桶策略。
    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 2022-07-01
    • 2022-11-17
    • 2020-10-21
    • 2019-06-18
    • 1970-01-01
    • 2020-03-07
    • 2022-01-17
    相关资源
    最近更新 更多