amazon-web-services - 如何捕获 CloudFormation 堆栈 CREATE_COMPLETED 事件并进行处理?
问题描述
我正在创建 CloudFormation 堆栈和要在堆栈创建完成后调用的 Lambda(堆栈获得 CREATE_COMPLETED 状态)。Lambda 不是堆栈资源,但可以根据需要对其进行更改以实现结果。
是否可以使用 CloudWatchRule 为堆栈捕获此事件?
目前我能够捕捉堆栈资源创建事件,但不能捕捉堆栈创建本身。
类似的问题包括将 CloudFormationTemplate 订阅到 SNS 主题的方法,但是这会在每个堆栈资源状态更改时触发 SNS,但不会触发堆栈本身。
鉴于此,每次资源更改都会调用 Lambda,这不会说明整个模板的状态。
解决方案
这是云形成完成后如何发送 SNS 通知的副本?是否可以在从 CloudFormation 模板创建时触发lambda
CloudWatch 规则不是这里的解决方案,因为规则是由一组有限的服务或 API 调用触发的。(请参阅此处的列表https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html)
解决方案是将您的 Cloudformation 模板与 SNS 主题挂钩(请参阅此处的文档https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html)并将 SNS 链接到 Lambda 函数。
您将收到如下消息
StackId='arn:aws:cloudformation:eu-west-1:99999999999:stack/test/b08a8460-368c-11e9-be1f-025fe09a8a16'
Timestamp='2019-02-22T10:30:41.127Z'
EventId='e710f3c0-368c-11e9-b22d-06366d428b7a'
LogicalResourceId='test'
Namespace='486652066693'
PhysicalResourceId='arn:aws:cloudformation:eu-west-1:486652066693:stack/test/b08a8460-368c-11e9-be1f-025fe09a8a16'
PrincipalId='AID....6SK'
ResourceProperties='null'
ResourceStatus='CREATE_COMPLETE'
ResourceStatusReason=''
ResourceType='AWS::CloudFormation::Stack'
StackName='test'
ClientRequestToken='Console-CreateStack-c305c793-9a83-b175-bd26-f251aee30adc'
推荐阅读
- node.js - 在 Express.js 中,如何仅为登录用户生成服务器端会话?mo
- laravel - htaccess 重定向 301 以形成 https://www.domain.pl
- nanogallery - 图像未出现在 nanogallery2 中
- mysql - 按日期连接所有组的列
- c# - C# 属性不能在方法的参数中继承
- python - 图优化后,矩阵乘法之前的转置是否会自动融合?
- ios - 如何快速访问元组字典中的值 4
- android - “WebView 不能为空”的特殊情况
- mobile - 在 Flutter 中,Listview 的内容被绘制在下面的 UI 元素上
- php - 如何比较多对多关系中的id