Serverless 添加假定角色以允许 cloudwatch 调用 lambda

Serverless add assumed role to allow cloudwatch to call lambda

我试图让 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: "*"

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

SourceArn: "*"

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

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

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