演练:使用 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 发布说明页面。

开始前的准备工作

在完成以下过程之前,请确认您至少有一个适用于 Linux、macOS ,或针对 Systems Manager 而配置的 Windows Server 的 Amazon Elastic Compute Cloud (Amazon EC2)实例正在运行。有关更多信息,请参阅 为 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