示例:向维护时段注册任务 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

您可以在 “运行命令” 中注册任务,该功能是Amazon Web Services Systems Manager,维护时段使用Amazon命令行界面 (AmazonCLI),如第 3 步:向维护时段注册任务 (AmazonCLI)。您也可为 Systems Manager 自动化工作流程注册任务,Amazon Lambda函数,并Amazon Step Functions任务,如下所示。

注意

必须为维护窗口 “运行命令类型任务” 指定一个或多个目标。根据任务的不同,目标对于其他维护窗口任务类型(自动化、Amazon Lambda, 和Amazon Step Functions)。有关运行未指定目标的任务的更多信息,请参阅。注册没有目标的维护时段任务

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

使用 --cli-input-json 选项

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

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

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

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

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

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

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --cli-input-json file://MyFile.json
    Windows
    aws ssm register-task-with-maintenance-window ^ --cli-input-json file://MyFile.json

关于伪参数

在某些示例中,我们使用伪参数 作为将 ID 信息传递到您任务的方法。例如,{{TARGET_ID}}{{RESOURCE_ID}}可用于传递Amazon资源添加到 “自动化”、“Lambda” 和 “Step Functions” 任务中。有关 --task-invocation-parameters 内容中伪参数的更多信息,请参阅关于伪参数

更多信息

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

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

任务注册示例

以下几节提供了示例AmazonCLI 命令,用于注册支持的任务类型和可用于的 JSON 示例。--cli-input-json选项。

以下示例说明如何使用将 Systems Manager 运行命令任务注册到维护时段:AmazonCLI。

Linux & macOS
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"]}}}"
Windows
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"]}}}"

用于配合使用的 JSON 内容--cli-input-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": "DOC-EXAMPLE-BUCKET", "OutputS3KeyPrefix": "DOC-EXAMPLE-FOLDER", "TimeoutSeconds": 3600 } } }

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

Amazon CLI 命令:

Linux & macOS

以下命令重新启动属于 ID 为 E32EECB2-646C-4F4b-8ED1-205FB 示例的维护时段目标组的 EC2 实例。

aws ssm register-task-with-maintenance-window \ --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 --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" ^ --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 --name "My-Restart-EC2-Instances-Automation-Task" ^ --description "Automation task to restart EC2 instances"

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

{ "WindowId": "mw-0c50858d01EXAMPLE", "TaskArn": "AWS-PatchInstanceWithRollback", "TaskType": "AUTOMATION","TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{RESOURCE_ID}}" ] } } } }

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

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

重要

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

Amazon CLI 命令:

Linux & macOS
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":"{\"InstanceId\":\"{{RESOURCE_ID}}\",\"targetType\":\"{{TARGET_TYPE}}\"}","Qualifier": "$LATEST"}}'
PowerShell
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\":\"{\\\"InstanceId\\\":\\\"{{RESOURCE_ID}}\\\",\\\"targetType\\\":\\\"{{TARGET_TYPE}}\\\"}\",\"Qualifier\": \"$LATEST\"}}'

用于配合使用的 JSON 内容--cli-input-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": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }, "Name": "My-Lambda-Task", "Description": "A description for my LAMBDA task", "Priority": 5 }

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

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

重要

适用于维护时段的 AWS Identity and Access Management (IAM) 策略要求您将 Step Functions 状态计算机名称添加前缀:SSM。继续注册此类型的任务之前,您必须在 Amazon Step Functions 中更新此名称以包括 SSM。例如,如果您的状态机名为 MyStateMachine,则将其更改为 SSMMyStateMachine

Amazon CLI 命令:

Linux & macOS
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-east-2:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE \ --task-type STEP_FUNCTIONS \ --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_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"
Windows
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-east-2:123456789012:stateMachine:SSMMyStateMachine-MggiqEXAMPLE ^ --task-type STEP_FUNCTIONS ^ --task-invocation-parameters '{"StepFunctions":{"Input":"{\"InstanceId\":\"{{RESOURCE_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"

用于配合使用的 JSON 内容--cli-input-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": "{ \"instanceId\": \"{{TARGET_ID}}\" }", "Name": "{{INVOCATION_ID}}" } }, "Name": "My-Step-Functions-Task", "Description": "A description for my Step Functions task", "Priority": 5 }