Auto Scaling グループ スケーリング時の Amazon SNS 通知の取得 - Amazon EC2 Auto Scaling (日本語)

Auto Scaling グループ スケーリング時の Amazon SNS 通知の取得

Amazon EC2 Auto Scalingが Auto ScalingグループのEC2インスタンスを起動または終了するときに通知を受け取ることができます。Amazon Simple Notification Service (Amazon SNS) を使用して通知を管理します。

Amazon SNS は、受信登録しているクライアントまたはエンドポイントへの通知の配信または送信の統合と管理を行います。Amazon SNS では、HTTP または HTTPS POST、E メール (SMTP、プレーンテキストまたは JSON 形式のいずれか)、あるいは Amazon SQS キューに投稿されるメッセージとして通知を配信する機能など、さまざまな通知オプションを提供しています。これにより、プログラムで通知を処理できます。詳細については、Amazon Simple Notification Service デベロッパーガイドを参照してください。

たとえば、autoscaling: EC2_INSTANCE_TERMINATE 通知タイプを使用するように Auto Scaling グループを設定すると、Auto Scaling グループはインスタンスを終了したときに、E メール通知を送信します。この E メールには、インスタンス ID やインスタンスを終了した理由など、終了したインスタンスの詳細が含まれます。

通知はイベント駆動型のアプリケーションの設計に便利です。通知を使用してリソースが目的の状態になったことをチェックすると、ポーリングが不要になります。この場合、RequestLimitExceededポーリングに起因するエラーが発生することもありません。

AWS では、通知を送信するためのさまざまなツールを用意しています。または、EventBridge と Amazon SNS を使用して、Auto Scaling グループがインスタンスを起動または終了したときに通知を送信することもできます。Eventbridge では、ルールにより、通知を受け取るイベントが記述されます。Amazon SNS では、トピックにより、受け取る通知の種類が記述されます。このオプションを使用すると、特定のイベントが 代わりに Lambda 関数をトリガーするかどうかを決定できます。詳細については、「EventBridge での Amazon EC2 Auto Scaling の使用」を参照してください。

SNS の通知

Amazon EC2 Auto Scaling は、次のイベントが発生したときに Amazon SNS 通知の送信をサポートします。

イベント 説明

autoscaling:EC2_INSTANCE_LAUNCH

インスタンスの起動成功

autoscaling:EC2_INSTANCE_LAUNCH_ERROR

インスタンスの起動失敗

autoscaling:EC2_INSTANCE_TERMINATE

インスタンスの削除成功

autoscaling:EC2_INSTANCE_TERMINATE_ERROR

インスタンスの削除失敗

メッセージには、次に示す情報が含まれます。

  • Event - イベント。

  • AccountId - Amazon Web Services アカウント ID

  • AutoScalingGroupName - Auto Scaling グループの名前

  • AutoScalingGroupARN - Auto Scaling グループのARN。

  • EC2InstanceId - EC2 インスタンスの ID。

例:

Service: AWS Auto Scaling Time: 2016-09-30T19:00:36.414Z RequestId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958 Event: autoscaling:EC2_INSTANCE_LAUNCH AccountId: 123456789012 AutoScalingGroupName: my-asg AutoScalingGroupARN: arn:aws:autoscaling:region:123456789012:autoScalingGroup... ActivityId: 4e6156f4-a9e2-4bda-a7fd-33f2ae528958 Description: Launching a new EC2 instance: i-0598c7d356eba48d7 Cause: At 2016-09-30T18:59:38Z a user request update of AutoScalingGroup constraints to ... StartTime: 2016-09-30T19:00:04.445Z EndTime: 2016-09-30T19:00:36.414Z StatusCode: InProgress StatusMessage: Progress: 50 EC2InstanceId: i-0598c7d356eba48d7 Details: {"Subnet ID":"subnet-id","Availability Zone":"zone"}

Amazon EC2 Auto Scaling の Amazon SNS 通知の設定

Amazon SNS を使用して E メール通知を送信するには、最初にトピックを作成してから、そのトピックと共に E メールアドレスを登録する必要があります。

Amazon SNS トピックを作成する

SNS トピックは論理アクセスポイント、つまり Auto Scaling グループが通知を送信するために使用する通信チャネルです。トピックの名前を指定することにより、トピックを作成します。

トピック名を作成する際には、名前が次の要件を満たしている必要があります。

  • 1 ~ 256 文字

  • 大文字および小文字の ASCII 文字、数字、アンダースコア、またはハイフンが含まれている

詳細については、Amazon Simple 通知サービス デベロッパーガイドの「Amazon SNS トピックの作成」を参照してください。

Amazon SNS トピックを購読します。

Auto Scaling グループがトピックに送信した通知を受信するには、そのトピックにエンドポイントを登録する必要があります。この手順では、エンドポイント に、Amazon EC2 Auto Scaling からの通知を受信する E メールアドレスを指定します。

詳細については、Amazon Simple 通知サービス デベロッパーガイドの「Amazon SNS トピックへのサブスクライブ」を参照してください。

Amazon SNS サブスクリプションを確認する

Amazon SNS は、前のステップで指定した E メールアドレスに確認メールを送信します。

次のステップに進む前に、必ずAWS通知からのの E メールを開き、リンクを選択して受信登録を確認してください。

AWSからの確認メッセージが届きます。Amazon SNS は、通知を受信し、通知を E メールとして指定された E メールアドレスに送信するように設定されました。

通知を送信するように Auto Scaling グループを設定する

Auto Scaling グループは、インスタンスの起動または終了などのスケーリング イベントが発生したときに Amazon SNS に通知を送信するように Auto Scaling グループを設定します。Amazon SNS は、指定した E メールアドレスに、インスタンスについての情報を含む通知を送信します。

Auto Scaling グループ(コンソール)の Amazon SNS 通知を設定するには

  1. (https://console.aws.amazon.com/ec2autoscaling/)で Amazon EC2 Auto Scaling コンソール を開きます。

  2. Auto Scaling グループの隣にあるチェックボックスを選択します。

    ページの下部に分割ウィンドウが開き、選択したグループに関する情報が表示されます。

  3. [アクティビティ]タブで、[アクティビティの通知]、[通知の作成]を選択します。

  4. [Create notifications] ペインで、以下の作業を行います。

    1. [SNS トピック]で、SNS トピックを選択します。

    2. [イベントタイプ]で、通知を送信するイベントを選択します。

    3. [作成] を選択します。

Auto Scaling グループに対して Amazon SNS 通知を設定するには (AWS CLI)

次の [put-notification-configuration] コマンドを使用します。

aws autoscaling put-notification-configuration --auto-scaling-group-name my-asg --topic-arn arn --notification-types "autoscaling:EC2_INSTANCE_LAUNCH" "autoscaling:EC2_INSTANCE_TERMINATE"

通知をテストする

起動イベントの通知を生成するには、Auto Scaling グループの希望容量を 1 増やして Auto Scaling グループを更新します。インスタンスを起動してから数分以内に通知を受け取ります。

希望する容量を変更するには (コンソール)

  1. (https://console.aws.amazon.com/ec2autoscaling/)で Amazon EC2 Auto Scaling コンソール を開きます。

  2. Auto Scaling グループの横にあるチェックボックスを選択します。

    [Auto Scaling グループ] ページの下部に分割ペインが開き、選択したグループに関する情報が表示されます。

  3. [詳細] タブで、[グループの詳細]、[編集] の順に選択します。

  4. [Desired capacity (希望する容量)] の場合は、現在の値を 1 ずつ増やします。この値が [Maximum capacity (最大容量)] を超える場合は、[Maximum capacity (最大容量)] の値を 1 ずつ増やす必要があります。

  5. [Update (更新)] を選択します。

  6. 数分後、イベントの通知が届きます。このテスト用に起動した追加のインスタンスが必要なくなった場合は、[Desired capacity (希望する容量)] を 1 減らすことができます。数分後、イベントの通知が届きます。

通知設定の削除

Amazon EC2 Auto Scaling通知設定が使用されなくなった場合は、削除できます。

Amazon EC2 Auto Scaling 通知設定を削除するには (コンソール)

  1. (https://console.aws.amazon.com/ec2autoscaling/)で Amazon EC2 Auto Scaling コンソール を開きます。

  2. Auto Scaling グループを選択します。

  3. [アクティビティ]タブで、削除する通知の横にあるチェックボックスを選択し、次に、[アクション]、[削除]を選択します。。

Amazon EC2 Auto Scaling 通知設定を削除するには (AWS CLI)

次の delete-notification-configuration コマンドを使用します。

aws autoscaling delete-notification-configuration --auto-scaling-group-name my-asg --topic-arn arn

Auto Scalingグループに関連付けられているAmazon SNSトピックとすべてのサブスクリプションの削除については、[Amazon Simple 通知サービス デベロッパーガイド]の[Amazon SNSサブスクリプションとトピックの削除]を参照してください。