设置 Lambda 函数以运行 CloudFormation 堆栈

Pus*_*kar 5 lambda aws-cloudformation

是否可以在收到特定 SNS 通知时运行 CloudFormation 堆栈。任何建议如何实现这种情况。

每当我收到特定的 SNS 通知时,都应该触发一个 Lambda 函数,然后该函数将启动一个 CloudFormation 堆栈。

Dun*_*dan 11

因为您可以从 AWS Lambda 内部访问 AWS API,所以完全没有问题。如果您使用的 Python 可能如下所示:

import boto3
cf_client = boto3.client('cloudformation')
cf_client.create_stack(
    StackName='your-stack',
    TemplateURL='https://s3.amazonaws.com/your-bucket/your-template'
)
Run Code Online (Sandbox Code Playgroud)

当然,还支持许多附加参数。

有一个很大的警告:上面的代码将创建一个堆栈,但不会跟踪堆栈创建是否成功。虽然您可以通过describe_stacks调用获取该信息,但您不能依赖于在 AWS Lambda 函数的该实例中完成堆栈,因为 AWS Lambda 函数的最长运行时间为 15 分钟,但 CloudFormation 堆栈创建可能需要更长的时间比起那个来说。

如果您不关心堆栈创建是否成功,您应该没问题,否则我建议您将create_stack调用返回的堆栈 id 写入持久存储(例如 DynamoDB)并有一个单独的计划 AWS Lambda 函数来检查状态DynamoDB 中存储的 CloudFormation 堆栈,并处理可能的堆栈创建结果。