对于尝试调用Lambda的Config,CloudFormation权限被拒绝

时间:2018-05-31 14:57:04

标签: aws-lambda amazon-cloudformation

我正在尝试创建一个CloudFormation模板,该模板创建一个AWS Config规则,该规则将调用lambda函数,但是我在给Config规则权限调用lambda时遇到问题。配置规则的名称是testConfigRule,它尝试调用的lambda的名称是testLambda。我的AWs :: Lambda :: Permission看起来像这样......

    "lambdaInvokePermission": {
        "Type": "AWS::Lambda::Permission",
        "Properties": {
            "FunctionName": {
                "Fn::GetAtt": [
                    "testLambda",
                    "Arn"
                ]
            },
            "SourceArn": {
                "Fn::GetAtt": [
                    "testConfigRule",
                    "Arn"
                ]
            },
            "Action": "lambda:InvokeFunction",
            "Principal": "config.amazonaws.com"
        },
        "DependsOn": [
            "testConfigRule"
        ]
    },

但我一直收到以下错误......

The AWS Lambda function arn:aws:lambda:us-east-2:1234567:function:testLambda cannot be invoked. Check the specified function ARN, and check the function's permissions.

如果我取出SourceArn它可以工作,但我想将Permission限制为一个配置规则。

目前,CFT正在......

  1. 创建lambda
  2. 创建配置规则
  3. 创建Config规则的权限以调用lambda
  4. 在创建Config之后以及创建权限之前尝试测试Config规则调用lambda时似乎失败,因此它不可避免地因权限错误而失败。

    在创建权限之前,有没有阻止测试Config规则?

1 个答案:

答案 0 :(得分:1)

你必须省略SourceArn,因为它并不适用于所有来源,实际上在写作时只有2(S3和SES)。

正如here

所述
  

所有事件源都不支持此属性。更多   信息,请参阅AddPermission的SourceAccount参数   AWS Lambda开发人员指南中的操作。

检查the api

  

此参数用于S3和SES。