amazon-web-services - 亚马逊:如何使用 cloudformation 输出数据发送 SNS
问题描述
在使用将数据发送到 Slack 的 lambda 函数完成后,我想发送一个通知,其中包含我的 cloudformation 堆栈的数据输出。
如何从 SNS 消息访问 cloudformation 输出数据?
解决方案
CloudFormation 生成的 SNS 消息具有以下形式:
{
"Records": [
{
"EventSource": "aws:sns",
"EventVersion": "1.0",
"EventSubscriptionArn": "arn:aws:sns:us-east-1:761323155761:my-topic:6eaf0af0-8707-45b8-a7fb-c900c56e0ca0",
"Sns": {
"Type": "Notification",
"MessageId": "a681c82f-9a58-58a2-bc5a-9fc379857c94",
"TopicArn": "arn:aws:sns:us-east-1:761323155761:my-topic",
"Subject": "AWS CloudFormation Notification",
"Message": "StackId='arn:aws:cloudformation:us-east-1:761323155761:stack/fggg/1294f6d0-0225-11eb-93fc-127c6c2d7f71'\nTimestamp='2020-09-29T07:26:21.471Z'\nEventId='129740c0-0225-11eb-93fc-127c6c2d7f71'\nLogicalResourceId='fggg'\nNamespace='761323155761'\nPhysicalResourceId='arn:aws:cloudformation:us-east-1:761323155761:stack/fggg/1294f6d0-0225-11eb-93fc-127c6c2d7f71'\nPrincipalId='AIDA3CQTFOEYUR5EGW2C5'\nResourceProperties='null'\nResourceStatus='CREATE_IN_PROGRESS'\nResourceStatusReason='User Initiated'\nResourceType='AWS::CloudFormation::Stack'\nStackName='fggg'\nClientRequestToken='Console-CreateStack-5414c3bd-914a-5eec-7b6e-1b0e9139cd20'\n",
"Timestamp": "2020-09-29T07:26:21.560Z",
"SignatureVersion": "1",
"Signature": "pE/h7Euukmm4xD/xedKlqN6pFDmWifx5GxdPHnK1pB+RVZvY60rO2XUBYTB11LNbDhaSxt7z6yyOWBHd29bMRtAeOOpl4wHzi3gYbrZbA//8xCdmoRHS2BRq4HMpT8WTxr6/i1dCrIjjyeT5KRGBZ/7WxvKJBixtHt+hjy9u41KUOL2HeHriiE+HYyqMCpzLb9DLY13jwpjtuwlk+e5le5rFmW6SobFLodhWDfers9wH760A5j3CxFt8uQnZmkInpega+SD3rqU9Ue/ZZAxxe2XDMsWT6EgznEJF/ToTbTo6HtNmiXE5iNd5xZAEjfPLPQ1Bc3R+JuvuWuiqJXkzCg==",
"SigningCertUrl": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-a86cb10b4e1f29c941702d737128f7b6.pem",
"UnsubscribeUrl": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:761323155761:my-topic:6eaf0af0-8707-45b8-a7fb-c900c56e0ca0",
"MessageAttributes": {}
}
}
]
}
正如您在上面看到的,它包含Message
带有StackId
. 因此,当您的函数从 SNS 获取此消息时,您必须对其进行解析以获取StackId
,然后使用 AWS 开发工具包来describe-stacks。SDK 调用的结果将包含堆栈的输出。
推荐阅读
- reactjs - react-bootstrap 按钮与文本字段位于同一行
- javascript - 在网页中查找函数
- vue.js - Laravel 从 vue 文件中混合延迟加载组件
- scala - 使用 Play JSON 转换 ReactiveMongo JSON
- reactjs - 如何使用 react-bootstrap 制作加载动画
- node.js - 从没有 npm-shrinkwrap.json 的 bitbucket 安装 npm 包
- java - RecyclerView 中的 SharedPreferences
- python - 在 TCP 发送期间如何检查文件是否保存到硬盘?
- python - 以编程方式进行 Windows 文件审核
- apache-spark - 如何在 Apahe Spark 中对数据框中的数据发出警报