Amazon EventBridge を使用した AWS Health イベントのモニタリング - AWS Health

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

Amazon EventBridge を使用した AWS Health イベントのモニタリング

Amazon EventBridge を使用して、AWS Health イベントを検出し、それらに対応することができます。そうすると、作成されたルールに基づいて、イベントがルールで指定されている値に一致するときに、EventBridge が 1 つ、または複数のターゲットアクションを呼び出します。イベントのタイプに応じて、イベント情報の取得、追加イベントの開始、通知の送信、是正措置の実施、またはその他のアクションを実行することができます。例えば、更新が予定されている AWS リソース (Amazon Elastic Compute Cloud (Amazon EC2) インスタンスなど) が AWS アカウント内にある場合に、AWS Health を使用して E メール通知を受け取ることができます。

メモ
  • AWS Health は、ベストエフォートベースでイベントを配信します。イベントが常に EventBridge に配信されるとは限りません。

  • ユーザーが作成する EventBridge ルールは、ユーザーの AWS アカウントに関する通知しか受信できません。AWS Organizations 内にあるその他アカウントの組織イベントは受信できません。詳細については、「組織ビューでのアカウント全体の AWS Health イベントの集計」を参照してください。

AWS Health ワークフローの一環として、複数のターゲットタイプから EventBridge のターゲットを選択することが可能です。これには以下が含まれます。

  • AWS Lambda 関数

  • Amazon Kinesis Data Streams

  • Amazon Simple Queue Service (Amazon SQS) キュー

  • 組み込みターゲット (CloudWatch アラームアクションなど)

  • Amazon Simple Notification Service (Amazon SNS) のトピック

例えば、AWS Health イベントの発生時に、Lambda 関数を使用して通知を Slack チャネルに渡すことができます。または、Lambda と EventBridge を使用して、AWS Health イベントの発生時に Amazon SNS でカスタムテキストまたは SMS 通知を送信することもできます。

AWS Health イベントに作成できる自動アラートおよびカスタムアラートのサンプルについては、GitHub の AWS Health Tools を参照してください。

AWS Health の AWS リージョンについて

EventBridge ルールは、AWS Health イベントを受信するリージョンごとに作成する必要があります。ルールを作成しなければ、イベントは受信されません。例えば、米国西部 (オレゴン) リージョンからイベントを受信するには、このリージョンのルールを作成する必要があります。

AWS Health イベントにはリージョン固有ではないものもあります。リージョンに固有ではないイベントはグローバルイベントと呼ばれます。これには、AWS Identity and Access Management (IAM) について送信されるイベントが含まれます。グローバルイベントを受信するには、米国東部 (バージニア北部) リージョンのルールを作成する必要があります。

AWS GovCloud (US) でグローバルイベントを受信するには、AWS GovCloud (米国西部) リージョンでルールを作成する必要があります。

AWS Health の公開イベントについて

EventBridge に配信されるのは、アカウントに固有の AWS Health イベントのみです。これには、Amazon EC2 インスタンスに必要な更新などのイベント、またはアカウントとリソースに影響する可能性があるその他のスケジュールされた変更イベントが含まれます。

現在、Service Health Dashboard からパブリックイベントを返すために EventBridge を使用することはできません。Service Health Dashboard からのイベントにより、リージョンでのサービスの可用性に関する情報が提供されます。これらのイベントは AWS アカウントに固有のものではないため、EventBridge には配信されません。

代わりに、AWS Health コンソールと DescribeEventDetails オペレーションを使用できます。いずれかのオプションを使用してイベントに関する情報を返してから、そのイベントが Service Health Dashboard からのパブリックイベントであるか、AWS アカウントに固有のイベントであるかを特定できます。

次のオプションを使用して、イベントがパブリックかアカウント固有かを識別できます。

  • AWS Health Dashboard で、イベントの [Affected resources] (影響を受けるリソース) タブを選択します。リソースがあるイベントは、アカウントに固有です。リソースのないイベントはパブリックであり、アカウント固有のものではありません。詳細については、「の開始方法AWS Healthダッシュボード — アカウントイベント」を参照してください。

  • AWS Health API を使用して、eventScopeCode パラメータを返します。イベントには PUBLICACCOUNT_SPECIFIC、または NONE の値を指定できます。詳細については、AWS Health API リファレンスDescribeEventDetails オペレーションを参照してください。

AWS Health Service Health Dashboard 通知ツールを使用して、パブリックイベントに関する通知を受けることもできます。詳細については、GitHub ウェブサイトの aws-health-tools を参照してください。

AWS Health に対する EventBridge ルールの作成

アカウント内の AWS Health イベントに関する通知を受け取るための EventBridge ルールを作成することができます。AWS Health に対するイベントルールを作成する前に、以下を完了しておきます。

  • EventBridge のイベント、ルール、ターゲットに精通しておいてください。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」、および「New EventBridge – Track and Respond to Changes to Your AWS Resources」(新しい EventBridge – AWS リソースへの変更を追跡して対応する) を参照してください。

  • イベントのルールで使用するターゲットを作成する。

AWS Health の EventBridge ルールを作成するには

  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。AWS Health イベントを追跡するリージョンを選択します。

  3. ナビゲーションペインで [Rules] (ルール) を選択します。

  4. [Create rule] (ルールを作成) を選択します。

  5. [Define rule detail] (ルールの詳細を定義) ページで、ルールの名前と説明を入力します。

  6. [Event bus] (イベントバス) と [Rule type] (ルールタイプ) のデフォルト値を維持して、[Next] (次へ) を選択します。

  7. [Build event pattern] (イベントパターンを構築) ページの [Event source] (イベントソース) で、[AWS events and EventBridge partner events] (AWS イベントまたは EventBridge パートナーイベント) を選択します。

  8. [Event pattern] (イベントパターン) の [AWS のサービス] (AWS のサービス) で、[Health] を選択します。

  9. [Event Type] (イベントタイプ) で、以下のいずれかのオプションを選択します。

    • [Specific Health Abuse Events] (特定の不正行為に関する Health イベント) – イベントタイプ名に Abuse という単語が含まれている AWS Health イベント用のルールを作成します。

    • [Specific Health events] (特定の Health イベント) – 特定の AWS のサービス (Amazon EC2 など) のイベント用のルールを作成します。

  10. [Any service] (任意のサービス) または [Specific service(s)] (特定のサービス) を選択できます。特定のサービスを選択する場合は、以下のオプションの 1 つを選択します。

    • すべてのイベントタイプのカテゴリに適用されるルールを作成するには、[Any event type category] (任意のイベントタイプのカテゴリ) を選択します。

    • [Specific event type category(s)] (特定のイベントタイプのカテゴリ) を選択してから、[issue][accountNotification]、または [scheduledChange] などの値をリストから選択します。

    ヒント
    • 特定のサービスのすべての AWS Health イベントをモニタリングする場合は、[Any event type category] (任意のイベントタイプのカテゴリ) と [Any resource] (任意のリソース) を選択することをお勧めします。これにより、指定したサービスに対して、新しいイベントタイプのコードを含む、すべての AWS Health イベントがルールで確実にモニタリングされます。ルールの例については、すべての Amazon EC2 イベントを参照してください。

    • 複数のサービスまたはイベントタイプのカテゴリをモニタリングするルールを作成できます。そのためには、ルールのイベントパターンを手動で更新する必要があります。詳細については、「複数のサービスおよびカテゴリに対するルールの作成」を参照してください。

  11. 特定のサービスおよびイベントタイプのカテゴリを選択した場合は、イベントタイプのコードに対して以下のいずれかのオプションを選択します。

    • すべてのイベントタイプのコードに適用されるルールを作成するには、[Any event type code] (任意のイベントタイプのコード) を選択します。

    • [Specific event type code(s)] (特定のイベントタイプのコード) を選択し、リストから 1 つ以上の値を選択します。これにより、特定のイベントタイプのコードにのみ適用されるルールが作成されます。例えば、AWS_EC2_INSTANCE_STOP_SCHEDULEDAWS_EC2_INSTANCE_RETIREMENT_SCHEDULED を選択すると、これらのイベントがアカウントで発生した場合に、それらのイベントのみにルールが適用されます。

  12. 影響を受けるリソースに対して、以下のいずれかのオプションを選択します。

    • すべてのリソースに適用されるルールを作成するには、[Any resource] (任意のリソース) を選択します。

    • [Specific resource(s)] (特定のリソース) を選択し、1 つ以上のリソースの ID を入力します。例えば、i-EXAMPLEa1b2c3de4 などの Amazon EC2 インスタンス ID を指定して、このリソースのみに影響を及ぼすイベントを監視できます。

  13. ルールのセットアップを見直して、イベントモニタリング要件を満たしていることを確認します。

  14. [Next] (次へ) を選択します。

  15. [Select target(s)] (ターゲットを選択) ページで、このルール用に作成したターゲットタイプを選択してから、そのタイプに必要な追加のオプションを設定します。例えば、イベントを Amazon SQS キューまたは Amazon SNS トピックに送信できます。

  16. [Next] (次へ) を選択します。

  17. (オプション) [Configure tags] (タグの設定) ページで、いずれかのタグを追加し、[Next] (次へ) を選択します。

  18. [Review and create] (確認および作成) ページで、ルールの設定を確認し、イベントモニタリング要件を満たしていることを確認してください。

  19. [Create rule] (ルールを作成) を選択します。

例 : すべての Amazon EC2 イベントに対するルール

以下の例は、イベントタイプのカテゴリ、イベントコード、およびリソースなど、EventBridge がすべての Amazon EC2 イベントを管理するためのルールを作成します。


          すべての Amazon EC2 イベントのみに対する EventBridge ルールを作成する方法を示すスクリーンショット。

例 : 特定の Amazon EC2 イベントに対するルール

以下の例は、EventBridge が以下を監視するルールを作成します。

  • Amazon EC2 サービス

  • scheduledChange イベントタイプのカテゴリ

  • AWS_EC2_INSTANCE_TERMINATION_SCHEDULED および AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED のイベントタイプのコード

  • i-EXAMPLEa1b2c3de4 という ID を持つインスタンス


          特定の Amazon EC2 イベントのみに対する EventBridge ルールを作成します。

複数のサービスおよびカテゴリに対するルールの作成

前の手順の例は、単一のサービスおよびイベントタイプのカテゴリに対してルールを作成する方法を示しています。複数のサービスやイベントタイプのカテゴリに対してルールを作成することもできます。つまり、モニタリングするサービスやカテゴリごとに個別のルールを作成する必要はありません。そのためには、イベントパターンを編集し、変更を手動で入力する必要があります。

次のオプションの 1 つを使用できます。

既存のルールにサービスとカテゴリを追加するには

  1. EventBridge コンソールの [Rules] (ルール) ページでルール名を選択します。

  2. 右上隅の[Edit] (編集) を選択します。

  3. [Next] (次へ) を選択します。

  4. [Event pattern] (イベントパターン) で [Edit pattern] (パターンを編集) をクリックしてから、変更内容をテキストフィールドに入力します。

  5. [Review and update] (確認と更新) ページが表示されるまで [Next] (次へ) を選択します。

  6. [Update rule] (ルールを更新) を選択して変更を保存します。

新しいルールにサービスとカテゴリを追加するには

  1. AWS Health に対する EventBridge ルールの作成」の手順をステップ 9 まで実行します。

  2. リストから単一のサービスまたはカテゴリを選択する代わりに、[Event pattern] (イベントパターン) で [Edit pattern] (パターンを編集) を選択します。

  3. テキストフィールドに変更を入力します。独自のイベントパターンを作成するためのモデルとして、以下のサンプルパターンを参照してください。

  4. イベントパターンを確認してから、「AWS Health に対する EventBridge ルールの作成」の残りの手順を実行してルールを作成します。

APIまたは AWS Command Line Interface (AWS CLI) の使用

新規または既存のルールの場合、PutRule API オペレーションまたは aws events put-rule コマンドを使用して、イベントパターンを更新します。AWS CLI コマンドの例については、AWS CLI コマンドリファレンスput-rule を参照してください。

例: 複数のサービスとイベントタイプのカテゴリ

以下のイベントパターンは、Amazon EC2、Amazon EC2 Auto Scaling、および Amazon VPC の 3 つの issue のサービスについて、accountNotificationscheduledChange、および AWS のイベントタイプカテゴリのイベントを監視するルールを作成します。

{ "detail": { "eventTypeCategory": [ "issue", "accountNotification", "scheduledChange" ], "service": [ "AUTOSCALING", "VPC", "EC2" ] }, "detail-type": [ "AWS Health Event" ], "source": [ "aws.health" ] }

AWS Chatbot を使用した AWS Health イベントの受信

Slack や Amazon Chime など、チャットクライアントで AWS Health イベントを直接受け取れます。このイベントを使用して、AWS のアプリケーションとインフラストラクチャに影響を及ぼす可能性がある、最近の AWS のサービス問題を特定することができます。その後、AWS Health Dashboard にサインインして、更新に関する詳細情報を確認できます。例えば、AWS アカウントで AWS_EC2_INSTANCE_STOP_SCHEDULED イベントタイプに対してモニタリングしている場合、AWS Health イベントを Slack チャネルに直接表示できます。

前提条件

開始する前に、以下のものが必要です。

  • AWS Chatbot で構成されたチャットクライアント。Amazon Chime と Slack を設定できます。詳細については、AWS Chatbot 管理者ガイドAWS Chatbot の開始方法を参照してください。

  • 作成した、およびサブスクライブした Amazon SNS トピック。SNS トピックが既にある場合、既存のトピックを使用できます。詳細については、「Amazon Simple Notification Service 開発者ガイド」の「Amazon SNS の開始方法」を参照してください。

AWS Chatbot を使用して AWS Health イベントを受信するには

  1. AWS Health に対する EventBridge ルールの作成」の手順をステップ 13 まで実行します。

    1. ステップ 14 でターゲットを選択するときに、SNS トピックを選択します。これと同じ SNS トピックを AWS Chatbot コンソールで使用します。

    2. 残りの手順を完了して、ルールを作成します。

  2. AWS Chatbot コンソールに移動します。

  3. Slack チャネル名など、チャットクライアントを選択し、[Edit] (編集) を選択します。

  4. [Notifications - optional] (通知 – オプション) セクションの [Topics] (トピック) で、ステップ 1 で指定したものと同じ SNS トピックを選択します。

  5. [Save] を選択します。

    ルールに一致するイベントを AWS Health が EventBridge に送信すると、AWS Health イベントがチャットクライアントに表示されます。

  6. イベント名を選択して、AWS Health Dashboard で詳細情報を確認します。

例 : Slack に送信される AWS Health イベント

以下は、Slack チャネルに表示されている、米国東部 (バージニア北部) での Amazon EC2 と Amazon Simple Storage Service (Amazon S3) の 2 つの AWS Health イベントの例です。


          Slack チャネルで 2 つの AWS Health イベントがどのように表示されるかを示すスクリーンショット。

Amazon EC2 インスタンスのアクションの自動化

Amazon EC2 インスタンスに対してスケジュールされたイベントに対応するアクションを自動化することができます。AWS Health が AWS アカウントにイベントを送信すると、EventBridge ルールがターゲット (AWS Systems Manager オートメーションドキュメントなど) を呼び出して、アクションの自動化をユーザーに代わって実行します。

例えば、Amazon EC2 インスタンスの使用停止イベントが Amazon Elastic Block Store (Amazon EBS)-backed EC2 インスタンスに対してスケジュールされている場合、AWS Health が AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED イベントタイプを AWS Health Dashboard に送信します。ルールでこのイベントタイプが検出されると、インスタンスの停止と開始を自動化できます。この方法では、これらのアクションを手動で実行する必要はありません。

注記

Amazon EC2 インスタンスに対するアクションを自動化するには、そのインスタンスが Systems Manager によって管理されている必要があります。

詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドEventBridge による Amazon EC2 の自動化を参照してください。

前提条件

ルールを作成する前に、AWS Identity and Access Management (IAM) ポリシーと IAM ロールを作成して、ロールの信頼ポリシーを更新しておく必要があります。

ロール用のカスタマー管理ポリシーを作成するには、次の手順に従います。このポリシーは、ユーザーに代わってアクションを実行するためのロールアクセス許可を付与します。この手順では、IAM コンソールの JSON ポリシーエディタを使用します。

IAM ポリシーを作成するには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで、[ポリシー] を選択します。

  3. [ポリシーの作成] を選択します。

  4. [JSON] タブを選択します。

  5. 次の JSON をコピーし、エディタでデフォルトの JSON を置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:DescribeInstanceStatus" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "ssm:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:*:*:Automation*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/AutomationEVRole" } ] }
    1. Resource パラメータで、Amazon リソース名 (ARN) として自分の AWS アカウント ID を入力します。

    2. ロール名を置き換えることも、デフォルトを使用することもできます。この例は AutomationEVRole を使用します。

  6. [Next: Tags] (次へ: タグ) を選択します。

  7. (オプション) キーバリューペアとしてのタグを使用して、メタデータをポリシーに追加することができます。

  8. 次へ: レビューを選択します。

  9. [Review policy] (ポリシーの確認) ページで、AutomationEVRolePolicy などの [Name] (名前) と、オプションの [Description] (説明) を入力します。

  10. [Summary] (概要) ページで、ポリシーが許容する許可を確認します。ポリシーが適切であれば、[Create policy] (ポリシーの作成) を選択します。

このポリシーによって、このロールが実行できるアクションが定義されます。詳細については、IAM ユーザーガイドIAM ポリシーの作成 (コンソール) を参照してください。

このポリシーを作成したら、IAM ロールを作成し、そのロールにポリシーをアタッチする必要があります。

AWS サービスのロールを作成するには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles] を選択し、続いて [Create role] を選択します。

  3. 信頼できるエンティティの種類の選択で、AWS サービスを選択します。

  4. このロールを引き受けることを許可するサービスに [EC2] を選択します。

  5. [Next: Permissions (次へ: アクセス許可)] を選択します。

  6. 作成したポリシー名 (AutomationEVRolePolicy など) を入力してから、そのポリシーの横にあるチェックボックスをオンにします。

  7. [Next: Tags] (次へ: タグ) を選択します。

  8. (オプション) キーと値のペアとしてタグを使用し、メタデータをロールに追加できます。

  9. 次へ: レビューを選択します。

  10. [Role name] (ロール名) には AutomationEVRole を入力します。この名前は、作成した IAM ポリシーの ARN に表示される名前と同じものにする必要があります。

  11. (オプション) [Role description] (ロールの説明) に、ロールの説明を入力します。

  12. ロール情報を確認し、[Create role (ロールの作成)] を選択します。

詳細については、IAM ユーザーガイドAWS のサービス用ロールの作成を参照してください。

最後に、作成したロールの信頼ポリシーを更新できます。この手順を完了して、EventBridge コンソールでこのロールを選択できるようにする必要があります。

ロールの信頼ポリシーを更新するには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで Roles (ロール) を選択します。

  3. AWS アカウントのロールのリストで、作成したロールの名前 (AutomationEVRole など) を選択します。

  4. [Trust relationships] タブを選択し、続いて [Edit trust relationship] を選択します。

  5. [Policy Document] (ポリシードキュメント) には、以下の JSON をコピーし、デフォルトポリシーを削除して、その代わりにコピーした JSON を貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. [Update Trust Policy] (信頼ポリシーの更新) をクリックします。

詳細については、IAM ユーザーガイドロールの信頼ポリシーの変更 (コンソール) を参照してください。

EventBridge のルールを作成する

EventBridge コンソールでこの手順を実行してルールを作成し、使用停止がスケジュールされている EC2 インスタンスの停止と起動を自動化できるようにします。

Systems Manager 自動アクションのための EventBridge のルールを作成する

  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションペインの [Events] (イベント) で、[Rules] (ルール) を選択します。

  3. [Create rule] (ルールの作成) ページで、ルールの [Name] (名前) と [Description] (説明) を入力します。

  4. [Define pattern] (パターンの定義) で、[Event pattern] (イベントパターン) を選択してから、[Pre-defined pattern by service] (サービスごとに事前定義されたパターン) を選択します。

  5. [Service provider] (サービスプロバイダー) で、AWS を選択します。

  6. [Service name] (サービス名) には [Health] を選択します。

  7. [Event type] (イベントタイプ) には [Specific Health events] (特定の Health イベント) を選択します。

  8. [Specific service(s)] (特定のサービス) を選択し、[EC2] を選択します。

  9. [Specific event type category(s)] (特定のイベントタイプのカテゴリ) を選択し、[scheduledChange] を選択します。

  10. [Specific event types code(s)] (特定のイベントタイプのコード) を選択し、イベントタイプのコードを選択します。

    例えば、Amazon EC2 EBS-backed インスタンスの場合、AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED を選択します。Amazon EC2 インスタンスの store-backed インスタンスの場合、AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED を選択します。

  11. [任意のリソース] を選択します。

    [Event pattern] (イベントパターン) は以下の例のようになります。

    { "source": [ "aws.health" ], "detail-type": [ "AWS Health Event" ], "detail": { "service": [ "EC2" ], "eventTypeCategory": [ "scheduledChange" ], "eventTypeCode": [ "AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED" ] } }
  12. Systems Manager オートメーションドキュメントターゲットを追加します。[Select targets] (ターゲットを選択) の [Target] (ターゲット) で [SSM Automation] (SSM オートメーション) を選択します。

  13. [ドキュメント] で、[AWS-RestartEC2Instance] を選択します。

  14. [Configure automation parameters(s)] (オートメーションパラメータの構成) を展開し、[Input Transformer] (入力トランスフォーマー) を選択します。

  15. [Input Path] (入力パス) フィールドに、{"Instances":"$.resources"} を入力します。

  16. 2 番目のフィールドに、{"InstanceId": <Instances>} を入力します。

  17. [Use existing role] (既存のロールを使用) を選択してから、作成した IAM ロール (AutomationEVRole など) を選択します。

    ターゲットは以下の例のようになります。

    
              EventBridge コンソールの「SSM オートメーション」例のスクリーンショット。
    注記

    必要な EC2 と Systems Manager のアクセス許可と、信頼されたリレーションシップを持つ既存の IAM ロールがない場合、ロールはリストに表示されません。詳細については、「前提条件」を参照してください。

  18. [Create] を選択します。

    ルールに一致するイベントがアカウント内で発生すると、EventBridge が指定されたターゲットにイベントを送信します。