チュートリアル: AWS CLI で SSM Agent を自動的に更新する - AWS Systems Manager

チュートリアル: AWS CLI で SSM Agent を自動的に更新する

以下の手順では、AWS Command Line Interface を使用して State Manager の関連付けを作成するプロセスを説明します。関連付けにより、ユーザーが指定したスケジュールに従って SSM Agent エージェントを自動的に更新できます。SSM Agent の詳細については、「SSM Agent の使用」を参照してください。コンソールを使用して SSM Agent の更新スケジュールをカスタマイズするには、「SSM Agent の自動更新」を参照してください。

SSM Agent の更新に関する通知を受け取るには、GitHub の「SSM Agent リリースノート」ページをサブスクライブします。

[開始する前に]

次の手順を完了する前に、Systems Manager 用に設定されている実行中の Amazon Elastic Compute Cloud (Amazon EC2) インスタンス (Linux、macOS または Windows Server) が少なくとも 1 つあることを確認します。詳細については、「AWS Systems Manager のマネージドノードのセットアップ」を参照してください。

AWS CLI または AWS Tools for Windows PowerShell を使用して関連付けを作成する場合は、次の例に示すように --Targets パラメータを使用してインスタンスをターゲットにします。--InstanceID パラメータは使用しないでください。--InstanceID パラメータはレガシーパラメータです。

SSM Agent を自動的に更新するための関連付けを作成するには
  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

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

  2. Amazon Elastic Compute Cloud (Amazon EC2) タグを使用してインスタンスをターゲットにして関連付けを作成するには、以下のコマンドを実行します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。Schedule パラメータは、毎週日曜日の午前 2:00 に関連付けを実行するようスケジュールを設定します。(UTC)

    State Manager の関連付けは、すべての cron および rate 式をサポートしていません。関連付けの cron および rate 式の作成の詳細については、「リファレンス: Systems Manager の Cron 式および rate 式」を参照してください。

    Linux & macOS
    aws ssm create-association \ --targets Key=tag:tag_key,Values=tag_value \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)"
    Windows
    aws ssm create-association ^ --targets Key=tag:tag_key,Values=tag_value ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)"

    インスタンス ID をカンマ区切りのリストで指定すると、複数のインスタンスを対象にすることができます。

    Linux & macOS
    aws ssm create-association \ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)"
    Windows
    aws ssm create-association ^ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)"

    更新したい SSM Agent のバージョンを指定できます。

    Linux & macOS
    aws ssm create-association \ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID \ --name AWS-UpdateSSMAgent \ --schedule-expression "cron(0 2 ? * SUN *)" \ --parameters version=ssm_agent_version_number
    Windows
    aws ssm create-association ^ --targets Key=instanceids,Values=instance_ID,instance_ID,instance_ID ^ --name AWS-UpdateSSMAgent ^ --schedule-expression "cron(0 2 ? * SUN *)" ^ --parameters version=ssm_agent_version_number

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

    {
        "AssociationDescription": {
            "ScheduleExpression": "cron(0 2 ? * SUN *)",
            "Name": "AWS-UpdateSSMAgent",
            "Overview": {
                "Status": "Pending",
                "DetailedStatus": "Creating"
            },
            "AssociationId": "123..............",
            "DocumentVersion": "$DEFAULT",
            "LastUpdateAssociationDate": 1504034257.98,
            "Date": 1504034257.98,
            "AssociationVersion": "1",
            "Targets": [
                {
                    "Values": [
                        "TagValue"
                    ],
                    "Key": "tag:TagKey"
                }
            ]
        }
    }

    システムは、インスタンス上で関連付けを作成し、作成後に状態を適用することを試みます。関連付けのステータスは Pending と表示されます。

  3. 作成した関連付けの最新のステータスを表示するには、次のコマンドを実行します。

    aws ssm list-associations

    インスタンスで最新バージョンの SSM Agent が実行されていない場合、ステータスは Failed になります。新しいバージョンの SSM Agent が公開されると、関連付けによって自動的に新しいエージェントがインストールされ、ステータスが Success と表示されます。