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

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

谢谢!

huangchaoqi 回答:重新启动EC2实例时发送SNS通知

如果在实例内 发出了重新引导,则AWS不会检测到该重新引导。只是操作系统在做自己的事情。

如果通过AWS管理控制台或API调用发出了重新引导,则实例实际上不会更改状态。来自Instance Lifecycle - Amazon Elastic Compute Cloud

  

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

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

规则如下:

{
  "source": [
    "aws.ec2"
  ],"detail-type": [
    "AWS API Call via CloudTrail"
  ],"detail": {
    "eventSource": [
      "ec2.amazonaws.com"
    ],"eventName": [
      "RebootInstances"
    ]
  }
}

然后它可以触发Amazon SNS通知,其中将包含instanceId

但是,通知不是很漂亮-它由JSON组成。如果要发送美观的消息,请参阅:amazon web services - Email notification through SNS and Lambda - Stack Overflow

,

您可以在实例上创建cron条目来执行@reboot(example here),并使用aws cli sns publish发送sns通知,而不是监视Cloudtrail。

,

您可以将crontab与@reboot结合使用来运行脚本。

$ crontab -e
@reboot $(python /home/ec2-user/sms.py)

对于sms.py处的python脚本/home/ec2-user

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

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)

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

本文链接:https://www.f2er.com/3070373.html

大家都在问