维护时段问题排查 - AWS Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

维护时段问题排查

使用以下信息可帮助您排查维护时段的问题。

编辑任务错误:在用于编辑维护时段任务的页面上,IAM 角色列表返回以下错误消息:“找不到为此任务指定的 IAM 维护时段角色。它可能已删除,也可能尚未创建。”

问题 1:您最初指定的 IAM 维护时段角色在您创建任务后被删除。

可能的修复措施:(1) 选择其他 IAM 维护时段角色(如果您的账户中存在),或者新建一个并为任务选择该角色。(2) 创建或选择 Systems Manager 服务相关角色。有关更多信息,请参阅 我应该使用服务相关角色还是自定义服务角色来运行维护时段任务?.

问题 2:如果任务是使用 AWS CLI、Windows PowerShell 工具或 AWS 开发工具包创建的,则可能指定了不存在的 IAM 维护时段角色名称。例如,IAM 维护时段角色可能已在创建任务之前删除,或者键入的角色名称不正确,如 myrole,而不是 my-role.

可能的修复措施:(1) 为您要使用的 IAM 维护时段角色选择正确的名称,或者新建一个要为任务指定的角色。(2) 创建或选择 Systems Manager 服务相关角色。有关更多信息,请参阅 我应该使用服务相关角色还是自定义服务角色来运行维护时段任务?.

并非所有维护时段目标都已更新

问题:您注意到维护时段任务未在维护时段的所有目标资源上运行。例如,在维护时段运行结果中,该资源的任务将标记为失败或超时。

解决方案:导致维护时段任务未在目标资源上运行的最常见原因涉及连接和可用性。例如:

  • Systems Manager 在维护时段操作前或期间丢失了与资源的连接。

  • 资源在维护时段操作期间处于脱机状态或停止状态。

您可以等待下一个计划的维护时段时间,以在资源上运行任务。您可以在不可用或离线的资源上手动运行维护时段任务。

任务失败,并显示错误消息:“Step fails when it is validing and resolving the step inputs (步骤在验证并解析步骤输入时步骤失败)”

问题:在任务中使用的 Automation 运行手册或 Systems Manager 命令文档需要您指定 InstanceIdSnapshotId 等输入,但未提供值或提供不正确。

  • 解决方案 1:如果您的任务面向单个资源(如单个实例或单个快照),请在任务的输入参数中输入其 ID。

  • 解决方案 2:如果您的任务是面向多个资源(例如,在使用运行手册 AWS-CreateImage 时从多个实例创建映像),则可以使用输入参数中的维护时段任务支持的伪参数之一来表示命令中的实例 ID。

    以下命令使用 Systems Manager 将 AWS CLI Automation 任务注册到维护时段。请注意,--targets 值表示维护时段目标 ID。此外,即使 --targets 参数指定了时段目标 ID,Automation 文档的参数也要求提供实例 ID。在这种情况下,命令使用伪参数 {{RESOURCE_ID}} 作为 InstanceId 值。

    AWS CLI 命令:

    Linux

    以下命令重新启动属于 ID 为 Amazon Elastic Compute Cloud 的维护时段目标组的 Amazon EC2 (e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE) 实例。

    aws ssm register-task-with-maintenance-window \ --window-id "mw-0c50858d01EXAMPLE" \ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE \ --task-arn "AWS-RestartEC2Instance" \ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole \ --task-type AUTOMATION \ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" \ --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" \ --description "Automation task to restart EC2 instances"
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id "mw-0c50858d01EXAMPLE" ^ --targets Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE ^ --task-arn "AWS-RestartEC2Instance" ^ --service-role-arn arn:aws:iam::123456789012:role/MyMaintenanceWindowServiceRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "Automation={DocumentVersion=5,Parameters={InstanceId='{{RESOURCE_ID}}'}}" ^ --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Restart-EC2-Instances-Automation-Task" ^ --description "Automation task to restart EC2 instances"

    有关为维护时段任务使用伪参数的更多信息,请参阅关于伪参数任务注册示例

错误消息:“不带目标的维护时段任务不支持 MaxConcurrency 值”和“不带目标的维护时段任务不支持 MaxErrors 值”

问题:注册 Run Command 类型的任务时,您必须为要运行的任务指定至少一个目标。对于其他任务类型(Automation、AWS Lambda 和 AWS Step Functions),目标是可选的,具体取决于任务的性质。未指定目标的维护时段任务不需要或不支持选项 MaxConcurrency(同时运行任务的资源数)和 MaxErrors(任务失败之前在目标资源上运行任务的失败次数)。如果未指定任务目标时为任一选项指定了值,系统将生成这些错误消息。

解决方案:如果您收到任一错误,请先删除并发和错误阈值,然后再继续注册或更新维护时段任务。

有关运行未指定目标的任务的更多信息,请参阅 注册不带目标的维护时段任务 中的 AWS Systems Manager 用户指南。