AWS Health
ユーザーガイド

Amazon CloudWatch Events での AWS Health イベントのモニタリング

Amazon CloudWatch Events を使用して、AWS Personal Health Dashboard (AWS Health) イベントのステータスの変化を検出し、対応することができます。次に、作成したルールで指定した値とイベントが一致すると、CloudWatch イベント で 1 つ以上のターゲットアクションが呼び出されます。イベントのタイプに応じて、通知の送信、イベント情報の取得、是正措置の実施、またはその他の対策を行うことができます。CloudWatch イベント を使用する際には、AWS Health ワークフローの一部として次のターゲットタイプを選択できます。

  • AWS Lambda 関数

  • Kinesis ストリーム

  • Amazon SQS キュー

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

  • Amazon SNS のトピック

次にユースケースをいくつか示します。

  • イベントの発生時に、Lambda 関数を使用して通知を Slack チャネルに渡します。

  • AWS Health イベントの発生時に、Lambda と CloudWatch イベント を使用して Amazon SNS でカスタムテキストまたは SMS 通知を送信します。

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

注記

AWS アカウントおよびリソースに固有の AWS Health イベントのみが CloudWatch イベント に発行されます。これには、EBS ボリュームの消失イベント、EC2 インスタンスストアのドライブパフォーマンスの低下イベント、すべての予定された変更イベントなどが含まれます。これに対して、サービスヘルスダッシュボードのイベントは、リージョンでのサービスの可用性に関する情報を提供するものであり、AWS アカウントに固有のものではないため、CloudWatch イベント には発行されません。これらのイベントタイプは、Personal Health Dashboard でのタイトルに「operational」の語が使用されます (例: 「SWF operational issue」)。

このトピックの残りの部分では、AWS Health の CloudWatch イベント ルールを作成するための基本的な手順について説明します。ただし、AWS Health のイベントルールを作成する前に、次のことを行う必要があります。

AWS Health 用の CloudWatch イベント ルールを作成するには:

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインの [Events] を選択します。

  3. [Create rule] を選択し、次に [Event Source] の下の [Service Name] で [Health] を選択します。

  4. AWS のサービスを指定します。

    • すべての AWS のサービスに適用されるルールを作成するには、[イベントタイプ]、[すべてのイベント] の順に選択します。すべてのイベントを選択すると、イベントタイプのカテゴリやイベントタイプのコードを選択することはできません。

    • 1 つのサービスのイベントにのみ適用されるルールを作成するには、[Specific Health events]、[Specific service(s)] の順に選択し、リストからサービス名を選択します(例: [EC2])。注意: 複数のサービスを選択することはできません。

  5. イベントタイプのカテゴリを指定します (特定のサービスを選択した場合)。

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

    • 1 つのイベントタイプのカテゴリにのみ適用されるルールを作成するには、[Specific event type category(s)] を選択し、リストから値を選択します(例: scheduledChange)。注意: 複数のカテゴリを選択することはできません。

  6. イベントタイプのコードを指定します (特定のサービスと特定のイベントタイプのカテゴリを選択した場合)。

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

    • 1 つまたは複数のイベントタイプのコードにのみ適用されるルールを作成するには、[Specific event type code(s)] を選択し、リストから 1 つまたは複数の値を選択します(例: AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED)。

  7. 影響を受けるリソースを指定します。

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

    • 1 つまたは複数のリソースにのみ適用されるルールを作成するには、[Specific resource(s)] を選択し、1 つまたは複数リソースの ID を入力します。たとえば、i-a1b2c34f と指定します。

  8. ルール設定を確認して、イベントモニタリング要件を満たしていることを確認します。

  9. [Targets] エリアで、[Add target*] を選択します。

  10. [Select target type] リストで、このルールを使用するために準備したターゲットのタイプを選択してから、そのタイプに必要な追加オプションを設定します。

  11. [Configure details] を選択します。

  12. [Configure rule details] ページで、ルールの名前と説明を入力し、[State] ボックスを選択して、作成後できるだけ早くルールを有効化します。

  13. ルールが適切であることを確認したら、[Create rule] を選択します。

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

EC2 インスタンスの新しいスケジュールされたイベントに応じて、アクションを自動化することができます。たとえば、AWS Health サービスによって生成された EC2 の予定されたイベントに対して CloudWatch イベント ルールを作成できます。次に、これらのルールは、AWS Systems Manager 自動化ドキュメントなどのターゲットをトリガーして、アクションを自動化できます。その他のオプションについては、「CloudWatch イベントを使用した Amazon EC2 の自動化」を参照してください。

たとえば、Amazon EC2 インスタンスのリタイアイベントが EBS-backed EC2 インスタンスに対してスケジュールされている場合、これらのアクションを手動で実行しなくても済むように、インスタンスの停止と起動を自動化できます。

リタイアが予定されている EBS-backed EC2 インスタンスの停止と起動を自動化する

  1. CloudWatch コンソールを開いて CloudWatch イベント ルールを作成する:

  2. イベントパターンのプレビューを編集し、次の入力を挿入します。

    { "source": [ "aws.health" ], "detail-type": [ "AWS Health Event" ], "detail": { "service": [ "EC2" ], "eventTypeCategory": [ "scheduledChange" ], "eventTypeCode": [ "AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED" ] } }

    コンソールに次のフィールドが表示されます。

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

  4. 次の図に示すように、[ターゲットの追加*]、[SSM Automation] の順に選択して、Systems Manager オートメーションドキュメントのターゲットを追加します。

  5. リストから、[AWS-RestartEC2Instance] Systems Manager ドキュメントを選択します。

  6. ここに示すように、{"Instances":"$.resources"} を InputPathsMap、{"InstanceId": <Instances>}入力テンプレートとして、インプットトランスフォーマーを設定します。

  7. 既存の IAM ロールを選択し、SSM オートメーションドキュメントを実行するアクセス権限を持つ新しいロールを作成します。

必要な EC2 と Systems Manager アクセス権限を持つ既存の IAM ロールがない場合は、作成します。

  1. IAM ポリシーを作成して、CloudWatch イベント 用の必要な IAM アクセス権限を設定します。次に、CloudWatch の IAM ロールにそのアクセス権限を関連付けます。この例では、IAM ロールに AutomationCWRole という名前を付けます。このような IAM ポリシーの例を示します。

    { "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::<AccountId>:role/AutomationCWRole" } ] }
  2. 必ず、ロール ARN をアカウント ID とロール名で更新します。また、ロールには、ここに示すように IAM ロールの信頼されたエンティティとして events.amazonaws.com および ssm.amazonaws.com が設定されていることを確認してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }