メンテナンスウィンドウを使用して、ステータス通知を返すコマンドを送信する - AWS Systems Manager

メンテナンスウィンドウを使用して、ステータス通知を返すコマンドを送信する

以下の手順は、AWS Systems Manager コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、メンテナンスウィンドウで Run Command タスクを登録する方法を示しています。Run Command は AWS Systems Manager の一機能です。この手順では、ステータス通知を返すように Run Command タスクを設定する方法についても説明します。

開始する前に

メンテナンスウィンドウを作成していない、またはターゲットを登録していない場合は、メンテナンスウィンドウを作成してターゲットを登録する方法の手順について、「コンソールを使用してメンテナンスウィンドウを作成および管理する」を参照してください。

Amazon Simple Notification Service (Amazon SNS) サービスから通知を受け取るには、登録されたタスクで指定された Maintenance Windows サービスロールに iam:PassRole ポリシーをアタッチします。Maintenance Windows サービスローに iam:PassRole アクセス許可を追加していない場合は、「タスク 5: iam:PassRole ポリシーをメンテナンスウィンドウロールにアタッチする」を参照してください。

通知を返す Run Command タスクをメンテナンスウィンドウに登録する (コンソール)

以下の手順で、Systems Manager コンソールを使用してステータス通知をメンテナンスウィンドウに返すように設定されている Run Command タスクを登録します。

通知を返す Run Command タスクをメンテナンスウィンドウに登録するには (コンソール)
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

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

  3. Amazon Simple Notification Service (Amazon SNS) 通知を送信するように設定された Run Command タスクを登録するメンテナンスウィンドウを選択します。

  4. [Actions (アクション)] を選択し、[Register Run command task (Run command タスクの登録)] を選択します。

  5. (オプション) [Name (名前)] フィールドにタスクの名前を入力します。

  6. (オプション) [Description (説明)] にリポジトリの説明を入力します。

  7. [Command document] (コマンドドキュメント) で、コマンドドキュメントを選択します。

  8. [タスクの優先順位] で、このタスクの優先度を指定します。ゼロ (0) が最高の優先度になります。メンテナンスウィンドウのタスクは、優先順位に従ってスケジュールされます。優先度が同じタスクは並行してスケジュールされます。

  9. [Targets (ターゲット)] セクションで登録済みのターゲット グループを選択するか、未登録のターゲットを選択します。

  10. [レート制御] の場合:

    • [同時実行数] の場合、コマンドを同時に実行するマネージドノードの数または割合を指定します。

      注記

      マネージドノードに適用されるタグを指定するか、AWS リソースグループを指定してターゲットを選択し、ターゲットとなるマネージドノードの数が不明な場合は、割合を指定してドキュメントを同時に実行できるターゲットの数を制限します。

    • [エラーのしきい値] で、ノードの数または割合のいずれかで失敗した後、他のマネージドノードでのコマンドの実行をいつ停止するか指定します。例えば、3 つのエラーを指定した場合、4 番目のエラーが受信されると、Systems Manager はコマンドの送信を停止します。コマンドを処理しているマネージドノードもエラーを送信する可能性があります。

  11. [IAM service role (IAM サービスロール)] 領域で、SNS ロールへの iam:PassRole アクセス許可を持つ Maintenance Windows サービスを選択します。

    注記

    iam:PassRole アクセス許可を Maintenance Windows ロールに追加すると、Systems Manager は SNS ロールを Amazon SNS に渡せるようになります。iam:PassRole アクセス許可を追加していない場合は、トピック Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング の「タスク 5」を参照してください。

  12. (オプション) [出力オプション] で、コマンド出力をファイルに保存するには、[S3 への出力の書き込みを有効にします] ボックスをオンにします。ボックスにバケット名とプレフィックス (フォルダ) 名を入力します。

    注記

    S3 バケットにデータを書き込む機能を許可する S3 アクセス許可は、このタスクを実行する IAM ユーザーのものではなく、マネージドノードに割り当てられたインスタンスプロファイルのものです。詳細については、「Systems Manager に必要なインスタンスのアクセス許可を設定する」または「ハイブリッド環境に IAM サービスロールを作成する」を参照してください。さらに、指定された S3 バケットが別の AWS アカウント にある場合は、マネージドノードに関連付けられたインスタンスプロファイルまたは IAM サービスロールに、そのバケットへの書き込みに必要なアクセス許可があることを確認してください。

  13. [SNS notifications (SNS 通知)] セクションで、以下を実行します。

    • [Enable SNS Notifications (SNS 通知を有効にする)] を選択します。

    • [IAM role (IAM ロール)] では、Amazon SNS 通知を使用した Systems Manager のステータス変更のモニタリング のタスク 3 で作成した Amazon SNS IAM ロール Amazon リソースネーム (ARN) を選択して、Amazon SNS を開始します。

    • [SNS topic (SNS トピック)] では、使用する Amazon SNS トピック ARN を入力します。

    • [Event type (イベントのタイプ)] では、通知を受け取るイベントを選択します。

    • [Notification type] (通知のタイプ) の場合は、複数のインスタンス (呼び出し) またはコマンドの概要に送信されたコマンドの各コピーの通知を受け取るよう選択します。

  14. [Parameters (パラメータ)] セクションで、選択したコマンドドキュメントに基づいて必要なパラメータを入力します。

  15. [Register Run command task (Run command タスクの登録)] を選択します。

  16. メンテナンスウィンドウを次回実行した後、E メールで Amazon SNS からのメッセージを確認し、Eメールを開いてください。Amazon SNS では、E メールメッセージの送信に数分かかる場合があります。

通知を返す Run Command タスクをメンテナンスウィンドウに登録 (CLI)

AWS CLI を使用してステータス通知をメンテナンスウィンドウに返すように設定されている Run Command タスクを登録するには、次の手順を使用します。

通知を返す Run Command タスクをメンテナンスウィンドウに登録するには (CLI)
注記

タスクオプションをより効率的に管理するために、この手順ではコマンドオプション --cli-input-json を使用します。オプション値は、JSON ファイルに保存されています。

  1. ローカルマシンで、RunCommandTask.json という名前のファイルを作成します。

  2. ファイルに次の内容を貼り付けます。

    { "Name": "Name", "Description": "Description", "WindowId": "mw-0c50858d01EXAMPLE", "ServiceRoleArn": "arn:aws:iam::account-id:role/MaintenanceWindowIAMRole", "MaxConcurrency": "1", "MaxErrors": "1", "Priority": 3, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskType": "RUN_COMMAND", "TaskArn": "CommandDocumentName", "TaskInvocationParameters": { "RunCommand": { "Comment": "Comment", "TimeoutSeconds": 3600, "NotificationConfig": { "NotificationArn": "arn:aws:sns:region:account-id:SNSTopicName", "NotificationEvents": [ "All" ], "NotificationType": "Command" }, "ServiceRoleArn": "arn:aws:iam::account-id:role/SNSIAMRole" } } }
  3. サンプル値を自分のリソースの情報に置き換えます。

    この例で省略されているオプションを使用する場合は、復元することもできます。たとえば、コマンドの出力を S3 バケットに保存することができます。

    詳細については、AWS CLI コマンドリファレンスの「register-task-with-maintenance-window」を参照してください。

  4. ファイルを保存します。

  5. ファイルを保存したローカルマシン上のディレクトリで、次のコマンドを実行します。

    aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    成功した場合、このコマンドは次のような情報を返します。

    {
        "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
    }
                        
  6. メンテナンスウィンドウを次に実行した後、E メールで Amazon SNS からのメッセージを確認し、Eメールを開いてください。Amazon SNS では、E メールメッセージの送信に数分かかる場合があります。

コマンドラインからメンテナンスウィンドウのタスクを登録する方法の詳細については、「メンテナンスウィンドウにタスクを登録する」を参照してください。