Amazon web services EC2实例重新启动时发送SNS通知

Amazon web services EC2实例重新启动时发送SNS通知,amazon-web-services,amazon-ec2,amazon-sns,Amazon Web Services,Amazon Ec2,Amazon Sns,我需要一个步骤的帮助。我知道我们可以在实例停止、终止、启动和挂起阶段发送SNS通知。但是当EC2实例重新启动时,我们如何发送通知呢 谢谢 如果在实例中重新启动,AWS将不会检测到。这只是操作系统在做自己的事情 如果通过AWS管理控制台或API调用重新启动,则实例的状态实际上不会改变。发件人: 重新启动实例相当于重新启动操作系统。实例保留在同一台主机上,并维护其公用DNS名称、专用IP地址及其实例存储卷上的任何数据。重新启动通常需要几分钟才能完成,但重新启动所需的时间取决于实例配置 因此,对通过A

我需要一个步骤的帮助。我知道我们可以在实例停止、终止、启动和挂起阶段发送SNS通知。但是当EC2实例重新启动时,我们如何发送通知呢

谢谢

如果在实例中重新启动,AWS将不会检测到。这只是操作系统在做自己的事情

如果通过AWS管理控制台或API调用重新启动,则实例的状态实际上不会改变。发件人:

重新启动实例相当于重新启动操作系统。实例保留在同一台主机上,并维护其公用DNS名称、专用IP地址及其实例存储卷上的任何数据。重新启动通常需要几分钟才能完成,但重新启动所需的时间取决于实例配置

因此,对通过AWS控制台或API发出的重新启动命令作出反应的唯一方法是创建一个AWS CloudWatch事件规则,该规则接收所有Amazon EC2事件,然后检查它是否专门用于重新启动命令

规则如下所示:

{
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "AWS API Call via CloudTrail"
  ],
  "detail": {
    "eventSource": [
      "ec2.amazonaws.com"
    ],
    "eventName": [
      "RebootInstances"
    ]
  }
}
然后,它可以触发Amazon SNS通知,其中包括
实例ID


然而,通知不是很漂亮——它由一团JSON组成。如果要发送外观更好的消息,请参阅:

您可以在实例上创建一个cron条目,该条目将执行@reboot(),并使用aws cli发送sns通知。您可以使用crontab和@reboot来运行脚本

$ crontab -e
@reboot $(python /home/ec2-user/sms.py)
对于python脚本
sms.py
at
/home/ec2 user

sms.py(如果需要,更改AWS区域):

确保实例上安装了boto3-
$pip install boto3--user

import boto3
import json
client = boto3.client('sns', region_name='us-west-2')


msg = 'Instance reboot!'
response = client.publish(
  PhoneNumber='+1XXXXXXXXXX',
  Message=msg)

print(response)