amazon-cloudformation - 如何在 Amazon EventBridge / Amazon CloudWatch 中监控 Cloudformation 事件?
问题描述
如何在 Amazon EventBridge / Amazon CloudWatch 中监控 Cloudformation 事件?
我的方法是在成功创建特定 Cloudformation 堆栈后立即触发 lambda 事件。
因此我想声明一个事件规则 - 但我不清楚来源和事件细节?
CreatePipelineRule:
Type: AWS::Events::Rule
Properties:
Description: "EventRule"
EventPattern:
source:
- aws.???
detail-type:
- 'Cloudformation stack created event'
detail:
event:
- ???
State: ENABLED
不幸的是,我找不到与此事件相关的文档。一般来说,事件模式描述为https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html
对于某些源,例如代码提交,生成的事件有据可查。例如代码提交:https ://docs.aws.amazon.com/codecommit/latest/userguide/monitoring-events.html 。
是否还有 Cloudformation 生成的事件列表?
解决方案
我自己找不到任何文档,所以为了查看 CloudFormation 发送什么样的事件,我临时在 EventBridge 中创建了一个新的事件规则:
- 从服务列表中选择
Pre-defined pattern by service
并选择CloudFormation
- 选择
CloudWatch log group
作为目标以将所有事件打印到 CloudWatch
例如,当您创建一个新堆栈时,您会收到两个事件,其中source
isaws.cloudformation
和details
包含以下之一:
"eventName": "EstimateTemplateCost"
"eventName": "CreateStack"
或者当你删除一个堆栈时,你会得到:
"eventName": "DeleteStack"
问题是 CloudFormation 仅在您开始操作时发送事件,而不是在操作完成时发送事件(无论是成功时,还是回滚时)。因此,使用事件规则可能不是在创建堆栈时触发 Lambda 的方式。我建议改为查看自定义资源。在您的 CloudFormation 模板中包含一个以针对您的 Lambda 函数并使用DependsOn
标签来确保它仅在其他所有内容都成功部署时运行。
推荐阅读
- ssas - 仅获得偶数年的结果
- javascript - 到达页脚时如何停止关注侧边栏?
- python - Requests.post 错误| TypeError: post() 至少需要 1 个参数(给定 1 个)
- c++ - 使用 setw() 正确格式化输出
- c - 需要帮助解决数组问题
- android - 单击时切换 TextView 可见性
- javascript - 如何使用javascript在带有空格的变量切片内切片值并将所有值放在单独的变量中
- vert.x - Vert.x: How to wait for a future to complete
- r - 从低采样率信号中滤除工频
- sql-server - SQL 触发器代码运行没有错误但没有输出