由Lambda支持的自定义资源

时间:2019-03-01 19:35:21

标签: python-3.x amazon-web-services amazon-cloudformation

我正在尝试在CFT中创建自定义资源,该资源将在创建所述模板时运行lambda函数。我看过有关Lambda支持的自定义资源的AWS文档,但是由于该文档不是特别冗长,因此我对该主题仍然有些困惑。我已经为自定义资源包括了JSON,我只是想知道是否还有其他事情要做,以确保该资源在创建模板时会调用函数。

"LambdaRunner": {
            "Type": "AWS::CloudFormation::CustomResource",
            "Properties": {
                "ServiceToken": {
                    "Fn::GetAtt": [
                        "DistroDBPop",
                        "Arn"
                    ]
                }
            }

注意:它引用的Lambda函数从S3资源中获取CSV,并使用该信息来创建和填充DynamoDB表。

1 个答案:

答案 0 :(得分:0)

假设CloudFormation模板包含一个名为DistroDBPop的Lambda函数,就看来调用该函数就足够了。

如果您查看Walkthrough: Looking Up Amazon Machine Image IDs - AWS CloudFormation,将会发现还需要其他几个元素:

  • Lambda函数
  • Lambda函数的角色
  • Lambda函数中的一个特殊回调,表明已完成

在以下位置有一些很好的Lambda示例代码:stelligent/cloudformation-custom-resources - GitHub

还有一个cfnresponse模块,可以使Lambda函数结尾处的回调更加容易。参见:AWS Lambda Function Code - AWS CloudFormation

最后,确保Lambda函数理解可以在堆栈的创建,更新和删除时调用它,因此除非它们是相关的,否则它可能需要“忽略”某些事件。