将AWS CloudFormation内在函数与s3api put-bucket-notification-configuration一起使用

时间:2018-07-13 15:57:17

标签: amazon-s3 aws-lambda amazon-cloudformation

由于CloudFormation的已知限制(其中S3存储桶通知配置不能可靠地应用于创建存储桶的CF模板中的存储桶),我不得不将通知配置拉出到单独的文件中,即然后在AWS CLI中使用,如下所示:

$ aws s3api put-bucket-notification-configuration --bucket <bucket> --notification-configuration file://<file>

只要我知道Lambda的ARN通知将提前触发,它就可以正常工作。不幸的是,我们将AWS账户划分为多个配置文件,Lambdas的ARN格式包含12位数字的配置文件ID,因此我希望动态地进行此操作。在CF模板中,我可以使用Join和Ref方法动态创建ARN,但是这些文件似乎并没有遵循相同的规则。首选的方法是使用类似以下的内容:

{
    "LambdaFunctionConfigurations": [
        {
            "LambdaFunctionArn": {
                "Fn::Join": [":", ["arn:aws:lambda", { "Ref": "AWS::Region" }, { "Ref": "AWS::AccountId" }, "function:<function_name>"]]
            },
            "Events": ["s3:ObjectCreated:*"]
        }
    ]
}

尝试时会收到验证错误,因为LambdaFunctionArn的值是对象而不是字符串。我的问题是:是否有人知道如何在put-bucket-notification-configuration调用中使用动态值,从而不必对区域和配置文件ID进行硬编码?

0 个答案:

没有答案