Amazon EC2 Auto Scaling の Amazon SNS 通知オプション Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EC2 Auto Scaling の Amazon SNS 通知オプション Amazon EC2 Auto Scaling

アプリケーションに影響する重要なイベントを通知するように Auto Scaling グループを設定できます。通知を使用すると、ポーリングを排除することもできます。ポーリングによって発生することがあるRequestLimitExceededエラーは発生しません。

Amazon EC2 Auto Scaling に関する通知を受け取るには、2 つの方法があります。

  • Amazon Simple Notification Service – Amazon SNS は、Auto Scaling グループがインスタンスを起動または終了したときに通知できます。Amazon SNS 通知は、オン/オフの切り替えのみが可能です。詳細については、「Amazon SNS と Amazon EC2 Auto Scaling」を参照してください。

  • Amazon EventBridge – 指定された基準に一致し、Amazon SNS を含むさまざまなターゲットに送信される、より高度なイベント駆動型通知 EventBridge を提供します。 EventBridge は、より正確なモニタリングのために、幅広い Auto Scaling イベントをモニタリングすることもできます。詳細については、「Auto Scaling イベントの処理に EventBridge を使用する」を参照してください。

、Amazon SNS EventBridge、Amazon SQS などのライフサイクルフックやサービスを使用して、インスタンスが起動時または終了時に保留状態になったときにカスタムアクションを実行することもできます。ライフサイクルフックは、Amazon EC2 Auto Scaling がインスタンスをグループに追加する前に、新しいインスタンスがユーザーデータで指定されたスクリプトを完了するまでさらに時間がかかることもあります。詳細については、「Amazon EC2 Auto Scaling のライフサイクルフック」を参照してください。

Amazon SNS と Amazon EC2 Auto Scaling

このセクションでは、Amazon SNS を使用して、Auto Scaling グループがインスタンスを起動または終了するタイミングをモニタリングする方法を示します。

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

Amazon EC2 Auto Scaling がグループに対してインスタンスを追加または削除すると、これらの変更に関する通知が送信され、インスタンスごとに 1 つの通知が送信されます。ただし、これらの通知の配信はベストエフォートベースであり、例えば、後のヘルスチェックが失敗した場合など、最初の通知後もインスタンスが失敗する可能性があります。そのため、Amazon EC2 Auto Scaling が最初に通知しても、インスタンスは後で失敗する可能性があります。最初のヘルスチェックを実行する前に、インスタンスの起動後 Amazon EC2 Auto Scaling が待機する時間を設定できます。詳細については、「Auto Scaling グループにヘルスチェックの猶予期間を設定する」を参照してください。

Amazon SNS 全般の詳細については、「Amazon Simple Notification Service デベロッパーガイド」を参照してください。

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 - アマゾン ウェブ サービスアカウント 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"} Origin: AutoScalingGroup Destination: EC2

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 Notifications からの E メールを開き、リンクを選択してサブスクリプションを確認するようにしてください。

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

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

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

Auto Scaling グループの Amazon SNS 通知を設定する (コンソール)
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

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

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

  3. [Activity] (アクティビティ) タブで、[Activity notifications] (アクティビティ通知)、[Create notification] (通知の作成) の順に選択します。

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

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

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

    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/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

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

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

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

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

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

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

通知設定を削除する

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

Amazon EC2 Auto Scaling 通知設定を削除する (コンソール)
  1. https://console.aws.amazon.com/ec2/ でAmazon EC2 コンソールを開き、ナビゲーションペインで [Auto Scaling グループ] を選択します。

  2. Auto Scaling スケーリンググループを選択します。

  3. [Activity] (アクティビティ) タブで、削除する通知の横にあるチェックボックスをオンにしてから、[Actions] (アクション)、[Delete] (削除) の順に選択します。

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 Notification Service デベロッパーガイド」の「Amazon SNS サブスクリプションおよびトピックを削除する」を参照してください。

暗号化された Amazon SNS トピックのキーポリシー

指定した Amazon SNS トピックは、 AWS Key Management Service で作成されたカスタマーマネージドキーで暗号化される場合があります。暗号化されたトピックに発行するための許可を Amazon EC2 Auto Scaling に付与するには、まず KMS キーを作成してから、次のステートメントを KMS キーのポリシーに追加する必要があります。サンプルの ARN を、キーへのアクセスが許可されている適切なサービスにリンクされたロールの ARN に置き換えます。詳細については、「Amazon Simple Notification Service デベロッパーガイド」の「AWS KMS 許可を設定する」を参照してください。

この例では、ポリシーステートメントは、 という名前のサービスにリンクされたロールに、カスタマーマネージドキーを使用するためのAWSServiceRoleForAutoScalingアクセス許可を付与します。Amazon EC2 Auto Scaling のサービスにリンクされたロールの詳細については、「Amazon EC2 Auto Scaling のサービスにリンクされたロール」を参照してください。

{ "Sid": "Allow service-linked role use of the customer managed key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }

Amazon EC2 Auto Scaling が暗号化されたトピックにパブリッシュできるようにするキーポリシーでは、aws:SourceArn および aws:SourceAccount 条件キーはサポートされていません。