EC2 の状態変更通知で、再起動だけ通知されない事象を回避するには
困っていた内容
re:Postをもとに、EC2 インスタンスの状態が変化したときにメール通知する仕組みを構築しました。
AWS マネジメントコンソールから EC2 を停止や開始すると通知されますが、再起動の場合は通知されませんでした。
なぜでしょうか。再起動も通知する方法を教えてください。
{
"source": ["aws.ec2"],
"detail-type": ["EC2 Instance State-change Notification"]
}
どう対応すればいいの?
CloudTrail (AWS API Call via CloudTrail
)を利用したイベントパターンに変更してください。
{
"source": ["aws.ec2"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["ec2.amazonaws.com"],
"eventName": ["RebootInstances", "StopInstances", "StartInstances"],
}
}
EC2 インスタンスの状態遷移において、起動や停止と異なり、再起動の場合は状態が変化しません。そのため、状態遷移を利用した通知方式では、再起動の場合に通知も行われません。
Amazon EC2 インスタンスの状態変更 - Amazon Elastic Compute Cloudより引用
代替案として、再起動の場合も CloudTrail イベントは発行されるため、状態遷移ではなく、CloudTrail イベントによる通知を設定してください。
参考資料
AWS CloudTrail はインスタンスが再起動されたときの API レコードを作成します。
- EC2 インスタンスの状態変化に関するメール通知を受信する | AWS re:Post
- Amazon EC2 インスタンスの状態変更イベント - Amazon Elastic Compute Cloud
インスタンスを起動または開始した場合、インスタンスは pending 状態に移行してから、running 状態になります。インスタンスを停止した場合、インスタンスは stopping 状態に移行してから、stopped 状態になります。インスタンスを終了した場合、インスタンスは shutting-down 状態に移行してから、terminated 状態になります。