我正在尝试创建一个Cloudwatch规则,在实例终止时向SNS发送EC2实例的名称(不是InstanceID)。以下代码段是AWS在我选择创建此简单规则时提供的默认事件模式,但我在" detail-type"中添加了1个部分。宾语。这部分是"实例名称"。这不起作用,因为我收到的SNS电子邮件仍然没有包含实例的名称。它只包含消息中的InstanceID。
{
"source": [
"aws.ec2"
],
"detail-type": [
"Instance Name",
"EC2 Instance State-change Notification"
]
}
到目前为止,我只是成功从Cloudwatch规则中获取了InstanceID。是否可以通过Cloudwatch检索标签中的自定义元数据?
话虽如此,如果通过Cloudwatch无法实现,是否有可能以某种方式将SNS主题发送到Lambda,并使用Lambda函数将instanceID转换为实例名称?
我的项目的重点在于我可以使用Lambda运行一个脚本,一旦它们终止,就会从监视应用程序中删除这些实例。在AWS之外,我们使用他们的名称来识别它们,而不是它们的instanceID。
答案 0 :(得分:3)
无法让CloudWatch向SNS发送更多信息。您需要为SNS主题订阅Lambda函数。在Lambda函数内部,您需要使用CloudWatch消息中的实例ID进行AWS API调用,以获取实例的标记。