AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

演练:创建维护时段来更新 SSM 代理 (AWS CLI)

以下演练说明如何使用 AWS CLI 创建 AWS Systems Manager 维护时段。本演练还介绍了如何将您的托管实例注册为目标,以及如何注册 Run Command 任务来更新 SSM 代理。

开始前的准备工作

您必须具有要配置的实例的管理员权限或必须已获得 AWS Identity and Access Management (IAM) 中的适当权限,才能完成以下过程。此外,请确认您至少有一个为 Systems Manager 配置的 Amazon EC2 实例(Linux 或 Windows)正在运行。有关更多信息,请参阅 Systems Manager 先决条件

步骤 1:开始

使用 AWS CLI 运行命令

  1. 安装并配置 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 并运行以下命令创建每周在周日 02:00(美国太平洋时区)运行的维护时段,中断 1 小时:

    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 表达式

    有关维护时段的不同计划选项之间的关系,请参阅参考:维护时段计划和活动期间选项

    系统将返回类似于以下内容的信息:

    {
       "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. 运行以下命令:

    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"
    }

    替代命令

    使用以下命令注册多个托管实例:

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

    使用以下命令使用 Amazon EC2 标签注册实例。例如:

    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:为维护时段注册 Run Command 任务以更新 SSM 代理

使用以下过程为您在步骤 1 中创建的维护时段注册 Run Command 任务。Run Command 任务更新已注册目标上的 SSM 代理。

为维护时段注册 Run Command 任务以更新 SSM 代理 (AWS CLI)

  1. 运行以下命令,使用步骤 3 中的 WindowTargetId 值注册维护时段的 Run Command 任务。此任务使用 AWS-UpdateSSMAgent 文档更新 SSM 代理。

    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::1122334455: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"
            }
        ]
    }