首页 > 解决方案 > 根据标签过滤 EC2,同时使用 Cloudwatch 事件规则通过 SNS 发送 EC2 实例状态更改通知

问题描述

我正在尝试使用事件模式配置 AWS 事件规则。默认情况下,代码是

{
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "EC2 Instance State-change Notification"
  ]
}

我想根据标签过滤 EC2,可以说我所有的 EC2 都附加了唯一的 AppID ie20567。我想过滤它的原因是因为其他团队在同一个 AWS 账户下拥有 EC2,我只想根据标签“App ID”为属于我的实例配置 SNS

目标我已选择 SNS 主题并使用带值的输入格式化程序

{"instance":"$.detail.instance-id","state":"$.detail.state","time":"$.time","region":"$.region","account":"$.account"}

任何建议我可以在哪里传递标签键值来过滤我的 EC2 实例。

标签: amazon-cloudwatchamazon-snsamazon-cloudwatch-events

解决方案


我只能代表 Cloudwatch Events(现在称为 EventBridge)。在规则匹配之前,我们不会从 EC2 获取标签信息。示例 EC2 事件显示在https://docs.aws.amazon.com/eventbridge/latest/userguide/event-types.html#ec2-event-type

{
   "id":"7bf73129-1428-4cd3-a780-95db273d1602",
   "detail-type":"EC2 Instance State-change Notification",
   "source":"aws.ec2",
   "account":"123456789012",
   "time":"2015-11-11T21:29:54Z",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"
   ],
   "detail":{
      "instance-id":"i-abcd1111",
      "state":"pending"
   }
}

因此,您最好的做法是获取资源的标签并在阅读后过滤掉事件。


推荐阅读