チュートリアル: SSM Agent を更新するメンテナンスウィンドウを作成する (AWS CLI) - AWS Systems Manager

チュートリアル: SSM Agent を更新するメンテナンスウィンドウを作成する (AWS CLI)

以下のチュートリアルでは、AWS Command Line Interface (AWS CLI) を使用して AWS Systems Manager メンテナンスウィンドウを作成する方法を説明します。また、このチュートリアルでは、マネージドノードをターゲットとして登録し、Systems Manager Run Command タスクを登録して SSM Agent を更新する方法を説明します。

開始する前に

次の手順を完了する前に、ユーザーは、設定するノードの管理者アクセス許可を持っているか、AWS Identity and Access Management (IAM) で適切なアクセス権限を付与されている必要があります。さらに、ハイブリッドおよびマルチクラウド環境で Systems Manager 用に設定されている Linux または Windows Server 用のマネージドノードが少なくとも 1 つ実行されていることを確認します。詳細については、「AWS Systems Manager のセットアップ」を参照してください。

ステップ 1: 作業を開始する

AWS CLI を使用してコマンドを実行します。
  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。

  2. ノードをメンテナンスウィンドウのターゲットとして登録する準備ができていることを確認します。

    次のコマンドを実行して、どのノードがオンラインかを確認します。

    aws ssm describe-instance-information --query "InstanceInformationList[*]"

    特定のノードについての詳細を表示するには、次のコマンドを実行します。

    aws ssm describe-instance-information --instance-information-filter-list key=InstanceIds,valueSet=instance-id

ステップ 2: メンテナンスウィンドウを作成する

次の手順を使用してメンテナンスウィンドウを作成し、スケジュールや所要時間などの基本的なオプションを指定します。

メンテナンスウィンドウ (AWS CLI) の作成
  1. AWS CLI を開き、次のコマンドを実行して、米国太平洋標準時で、毎週日曜日の午前 2 時に実行されるメンテナンスウィンドウを作成します。カットオフは 1 時間です。

    Linux & macOS
    aws ssm create-maintenance-window \ --name "My-First-Maintenance-Window" \ --schedule "cron(0 2 ? * SUN *)" \ --duration 2 \ --schedule-timezone "America/Los_Angeles" \ --cutoff 1 \ --no-allow-unassociated-targets
    Windows
    aws ssm create-maintenance-window ^ --name "My-First-Maintenance-Window" ^ --schedule "cron(0 2 ? * SUN *)" ^ --duration 2 ^ --schedule-timezone "America/Los_Angeles" ^ --cutoff 1 ^ --no-allow-unassociated-targets

    schedule パラメータの cron 式での作成の詳細については、「リファレンス: Systems Manager の Cron 式および rate 式」を参照してください。

    メンテナンスウィンドウのスケジュールに関するオプションの相互関係については、「メンテナンスウィンドウのスケジューリングおよび有効期間のオプション」を参照してください。

    --schedule オプションの使用方法の詳細については、「リファレンス: Systems Manager の Cron 式および rate 式」を参照してください。

    システムが以下のような情報を返します。

    {
       "WindowId":"mw-0c50858d01EXAMPLE"
    }
  2. 現在の AWS リージョン の AWS アカウント で作成されたこのメンテナンスウィンドウおよび他のメンテナンスウィンドウを一覧表示するには、次のコマンドを実行します。

    aws ssm describe-maintenance-windows

    システムが以下のような情報を返します。

    {
        "WindowIdentities": [
            {
                "Cutoff": 1,
                "Name": "My-First-Maintenance-Window",
                "NextExecutionTime": "2019-02-03T02:00-08:00",
                "Enabled": true,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Duration": 2
            }
        ]
    }

ステップ 3: メンテナンスウィンドウのターゲットを登録する (AWS CLI)

次の手順に従って、ステップ 2 で作成したメンテナンスウィンドウにターゲットを登録します。ターゲットを登録することで、更新するノードを指定します。

メンテナンスウィンドウのターゲットを登録するには (AWS CLI)
  1. 以下のコマンドを実行します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --target "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" ^ --resource-type "INSTANCE"

    以下のような情報が返されます。これには、メンテナンスウィンドウのターゲット ID が含まれます。WindowTargetId 値をコピーするか、メモします。このメンテナンスウィンドウにタスクを登録するには、次のステップでこの ID を指定する必要があります。

    {
       "WindowTargetId":"1a2b3c4d-1a2b-1a2b-1a2b-1a2b3c4d-1a2"
    }
    代替コマンド

    次のコマンドを使用して、複数のマネージドノードを登録します。

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE,i-0471e04240EXAMPLE" ^ --resource-type "INSTANCE"

    タグを使用してノードを登録するには、次のコマンドを使用します。

    Linux & macOS
    aws ssm register-target-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=tag:Environment,Values=Prod" "Key=tag:Role,Values=Web" \ --resource-type "INSTANCE"
    Windows
    aws ssm register-target-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets "Key=tag:Environment,Values=Prod" "Key=tag:Role,Values=Web" ^ --resource-type "INSTANCE"
  2. 以下のコマンドを実行して、メンテナンスウィンドウのターゲットを表示します。

    aws ssm describe-maintenance-window-targets --window-id "mw-0c50858d01EXAMPLE"

    システムが以下のような情報をレスポンスします。

    {
        "Targets": [
            {
                "ResourceType": "INSTANCE",
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Targets": [
                    {
                        "Values": [
                            "i-02573cafcfEXAMPLE"
                        ],
                        "Key": "InstanceIds"
                    }
                ],
                "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            },
            {
                "ResourceType": "INSTANCE",
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Targets": [
                    {
                        "Values": [
                            "Prod"
                        ],
                        "Key": "tag:Environment"
                    },
                    {
                        "Values": [
                            "Web"
                        ],
                        "Key": "tag:Role"
                    }
                ],
                "WindowTargetId": "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
            }
        ]
    }

ステップ 4: SSM Agent を更新するメンテナンスウィンドウに Run Command タスクを登録する

次の手順に従って、ステップ 1 で作成したメンテナンスウィンドウに Run Command タスクを登録します。Run Command タスクは、登録されたターゲットに対して SSM Agent を更新します。

SSM Agent を更新するメンテナンスウィンドウに Run Command タスクを登録するには (AWS CLI)
  1. 次のコマンドを実行して、ステップ 3 の WindowTargetId 値を使用してメンテナンスウィンドウの Run Command タスクを登録します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。このタスクは、AWS-UpdateSSMAgent ドキュメントを使用して SSM Agent を更新します。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --task-arn "AWS-UpdateSSMAgent" \ --name "UpdateSSMAgent" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --service-role-arn "arn:aws:iam:account-id:role/MW-Role" \ --task-type "RUN_COMMAND" \ --max-concurrency 1 --max-errors 1 --priority 10
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --task-arn "AWS-UpdateSSMAgent" ^ --name "UpdateSSMAgent" ^ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ^ --service-role-arn "arn:aws:iam:account-id:role/MW-Role" ^ --task-type "RUN_COMMAND" ^ --max-concurrency 1 --max-errors 1 --priority 10
    注記

    前のステップで登録したターゲットが Windows Server 2012 R2 またはそれ以前の場合は、AWS-UpdateEC2Config ドキュメントを使用する必要があります。

    システムが以下のような情報を返します。

    {
       "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
  2. 以下のコマンドを実行して、メンテナンスウィンドウの登録されたすべてのタスクを一覧表示します。

    aws ssm describe-maintenance-window-tasks --window-id "mw-0c50858d01EXAMPLE"

    システムが以下のような情報をレスポンスします。

    {
        "Tasks": [
            {
                "ServiceRoleArn": "arn:aws:iam::111122223333:role/MW-Role",
                "MaxErrors": "1",
                "TaskArn": "AWS-UpdateSSMAgent",
                "MaxConcurrency": "1",
                "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
                "TaskParameters": {},
                "Priority": 10,
                "WindowId": "mw-0c50858d01EXAMPLE",
                "Type": "RUN_COMMAND",
                "Targets": [
                    {
                        "Values": [
                            "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE"
                        ],
                        "Key": "WindowTargetIds"
                    }
                ],
                "Name": "UpdateSSMAgent"
            }
        ]
    }