【发布时间】:2020-05-13 02:57:38
【问题描述】:
是否可以在收到特定 SNS 通知时运行 CloudFormation 堆栈。 任何建议如何实现这种情况。
每当我收到特定的 SNS 通知时,都应触发 Lambda 函数,然后启动 CloudFormation 堆栈。
【问题讨论】:
标签: lambda amazon-cloudformation
是否可以在收到特定 SNS 通知时运行 CloudFormation 堆栈。 任何建议如何实现这种情况。
每当我收到特定的 SNS 通知时,都应触发 Lambda 函数,然后启动 CloudFormation 堆栈。
【问题讨论】:
标签: lambda amazon-cloudformation
因为您可以从 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'
)
当然还有很多附加参数是supported as well。
有一个很大的警告:上面的代码将创建一个堆栈,但不会跟踪堆栈创建是否成功。虽然您可以通过 describe_stacks 调用获取该信息,但您不能依赖在 AWS Lambda 函数的该实例中拥有一个完成的堆栈,因为 AWS Lambda 函数的最长运行时间是 15 分钟,但 CloudFormation 堆栈创建可能需要更长的时间。
如果您不关心堆栈创建是否成功,您应该很好,否则我建议您将 create_stack 调用返回的堆栈 ID 写入持久存储(例如 DynamoDB)并有一个单独的计划 AWS Lambda 函数检查存储在 DynamoDB 中的 CloudFormation 堆栈的状态并处理可能的堆栈创建结果。
【讨论】: