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

示例:向维护时段注册任务

您可以使用 AWS CLI 向维护时段注册 Systems Manager Run Command 任务,如步骤 3:向维护时段注册任务 (AWS CLI) 中所示。您也可为 Systems Manager Automation 工作流程、AWS Lambda 函数和 AWS Step Functions 任务注册任务,如下所示。

在本主题中,我们提供的示例演示了如何使用 register-task-with-maintenance-window CLI 命令,分别将四种支持的任务类型注册到维护时段。这些示例仅用于演示目的,不过您可以修改它们以创建工作任务注册命令。

使用 --cli-input-json 选项

为了更好地管理任务选项,您可以使用命令选项 --cli-input-json,其选项值在 JSON 文件中引用。

要使用我们在下列示例中提供的示例 JSON 文件内容,请在您本地计算机上执行以下操作:

  1. 创建一个文件,采用类似于 MyRunCommandTask.jsonMyAutomationTask.json 或其他您偏好的名称。

  2. 将 JSON 示例内容复制到该文件中。

  3. 为您的任务注册修改文件内容,然后保存该文件。

  4. 在存储文件的同一个目录中,运行以下命令:用您的文件名替换 MyFile.json

    aws ssm register-task-with-maintenance-window --cli-input-json file://MyFile.json

关于伪参数

在某些示例中,我们使用伪参数 作为将 ID 信息传递到您任务的方法。例如,在示例中,使用 {{TARGET_ID}} 将实例 ID 信息传递到 Automation、Lambda 和 Step Functions 任务。有关 --task-invocation-parameters 内容中伪参数的更多信息,请参阅关于伪参数

更多信息

有关一些基本 register-task-with-maintenance-window 选项的信息,请参阅关于 register-task-with-maintenance-windows 选项

有关命令选项的全面信息,请参阅以下主题:

任务注册示例

以下部分提供了一个示例 AWS CLI 命令,用于注册支持的任务类型和可与 --cli-input-json 选项一起使用的 JSON 示例。

注意

我们提供的 CLI 命令格式设置为从本地 Linux 计算机运行。要从本地 Windows 计算机运行它们,请删除行末尾的换行符 (\)。该示例 JSON 内容格式同时适用于 Linux 和 Windows 本地计算机。

注册 Systems Manager Run Command 任务

以下示例说明如何使用 AWS CLI 将 Systems Manager Run Command 任务注册到维护时段:

AWS CLI 命令:

aws ssm register-task-with-maintenance-window --window-id mw-0c50858d01EXAMPLE \ --task-arn "AWS-RunShellScript" --max-concurrency 1 --max-errors 1 --priority 10 \ --targets "Key=InstanceIds,Values=i-02573cafcfEXAMPLE" --task-type "RUN_COMMAND" \ --task-invocation-parameters "{"RunCommand":{"Parameters":{"commands":["df"]}}}"

用于 --cli-input-json 文件选项的 JSON 内容:

{ "TaskType": "RUN_COMMAND", "WindowId": "mw-0c50858d01EXAMPLE", "Description": "My Run Command task to update SSM Agent on an instance", "MaxConcurrency": "1", "MaxErrors": "1", "Name": "My-Run-Command-Task", "Priority": 10, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "AWS-UpdateSSMAgent", "TaskInvocationParameters": { "RunCommand": { "Comment": "A TaskInvocationParameters test comment", "NotificationConfig": { "NotificationArn": "arn:aws:sns:us-east-2:123456789012:my-sns-topic-name", "NotificationEvents": [ "All" ], "NotificationType": "Invocation" }, "OutputS3BucketName": "my-s3-bucket-name", "OutputS3KeyPrefix": "my-s3-bucket-folder-name", "TimeoutSeconds": 3600 } } }
注册 Systems Manager Automation 任务

以下示例说明如何使用 AWS CLI 将 Systems Manager Automation 任务注册到维护时段:

AWS CLI 命令:

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='{{TARGET_ID}}'}}" \ --priority 0 --max-concurrency 10 --max-errors 5 --name "My-Automation-Task" \ --description "A description for my Automation task"

用于 --cli-input-json 文件选项的 JSON 内容:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "AWS-PatchInstanceWithRollback", "TaskType": "AUTOMATION", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{TARGET_ID}}" ] } } } }
注册 AWS Lambda 任务

以下示例说明如何使用 AWS CLI 将 AWS Lambda 函数任务注册到维护时段:

对于这些示例,创建 Lambda 函数的用户将其命名为 SSMrestart-my-instances,并创建名为 targetIdtargetType 的两个参数。

重要

维护时段的 IAM 策略要求您使用 SSM 作为 Lambda 函数(或别名)名称的前缀。继续注册此类型的任务之前,您必须在 AWS Lambda 中更新此名称以包括 SSM。例如,如果您的 Lambda 函数名称为 MyLambdaFunction,请将其更改为 SSMMyLambdaFunction

AWS CLI 命令:

aws ssm register-task-with-maintenance-window --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" --priority 2 \ --max-concurrency 10 --max-errors 5 --name "My-Lambda-Example" \ --description "A description for my LAMBDA example task" --task-type "LAMBDA" \ --task-arn "arn:aws:lambda:us-east-2:123456789012:function:serverlessrepo-SSMrestart-my-instances-C4JF9EXAMPLE" \ --task-invocation-parameters '{"Lambda":{\"Payload\":{\"targetId\":\"{{TARGET_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"},"Qualifier": "$LATEST"}}'

用于 --cli-input-json 文件选项的 JSON 内容:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_RestartMyInstances", "TaskType": "LAMBDA", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "Lambda": { "ClientContext": "ew0KICAi--truncated--0KIEXAMPLE", "Payload": "{ \"targetId\": \"{{TARGET_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }, "Name": "My-Lambda-Task", "Description": "A description for my LAMBDA task", "Priority": 5 }
注册 AWS Step Functions 任务

以下示例说明如何使用 AWS CLI 将 AWS Step Functions 状态机任务注册到维护时段:

对于这些示例,创建 Step Functions 状态机的用户创建名为 SSMMyStateMachine 的状态机和名为 targetId 的参数。

重要

维护时段的 IAM 策略要求您使用 SSM 作为 Step Functions 状态机名称的前缀。继续注册此类型的任务之前,您必须在 AWS Step Functions 中更新此名称以包括 SSM。例如,如果您的状态机名为 MyStateMachine,则将其更改为 SSMMyStateMachine

AWS CLI 命令:

aws ssm register-task-with-maintenance-window --window-id "mw-0c50858d01EXAMPLE" \ --targets "Key=WindowTargetIds,Values=e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" \ --task-arn arn:aws:states:us-west-2:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \ --task-type STEP_FUNCTIONS \ --task-invocation-parameters '{"StepFunctions":{"Input":"{\"targetId\":\"{{TARGET_ID}}\"}"}, "Name": "{{INVOCATION_ID}}"}' \ --priority 0 --max-concurrency 10 --max-errors 5 \ --name "My-Step-Functions-Task" --description "A description for my Step Functions task"

用于 --cli-input-json 文件选项的 JSON 内容:

{ "WindowId": "mw-0c50858d01EXAMPLE", "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskArn": "SSM_MyStateMachine", "TaskType": "STEP_FUNCTIONS", "MaxConcurrency": "10", "MaxErrors": "10", "TaskInvocationParameters": { "StepFunctions": { "Input": "{ \"targetId\": \"{{TARGET_ID}}\" }", "Name": "{{INVOCATION_ID}}" } }, "Name": "My-Step-Functions-Task", "Description": "A description for my Step Functions task", "Priority": 5 }

本页内容: