範例:向維護時段註冊任務
您可以在 Run Command (AWS Systems Manager 的一項功能) 中使用 AWS Command Line Interface (AWS CLI) 註冊一項任務以及維護時段,如註冊任務及維護時段中所示。您也可以依照本主題稍後的示範,為 Systems Manager Automation 工作流程、AWS Lambda 函數和 AWS Step Functions 任務註冊任務。
注意
為維護時段 Run Command 類型任務指定一或多個目標。視任務而定,對於其他維護時段任務類型 (Automation、AWS Lambda 和 AWS Step Functions),目標是選用的。如需有關執行未指定目標之任務的詳細資訊,請參閱 註冊不含目標的維護時段任務。
在這個主題中,我們提供的範例是使用 AWS Command Line Interface (AWS CLI) 命令 register-task-with-maintenance-window
來向維護時段註冊四種支援任務。此範例僅用於示範,但您可以進行修改來建立可運作的任務註冊命令。
使用 --cli-input-json 選項
為了更有效地管理您的任務選項,您可以使用命令選項 --cli-input-json
,內含 JSON 檔案中參考的選項值。
若要使用我們在以下範例中提供的範本 JSON 檔案內容,請在您的本機機器上執行下列動作:
-
建立包含
MyRunCommandTask.json
、MyAutomationTask.json
這類名稱或您偏好的另一個名稱來建立檔案。 -
將我們的 JSON 範本內容複製到此檔案中。
-
將檔案內容修改為任務註冊適用的內容,然後儲存檔案。
-
在您存放該檔案的相同目錄中執行下列命令。替換
MyFile.json
的檔案名稱。
維護時段任務中的虛擬參數
在某些範例中,我們使用虛擬參數做為將 ID 資訊傳遞到任務的方法。例如,{{TARGET_ID}}
和 {{RESOURCE_ID}}
可以用來將 AWS 資源的 ID 傳遞給 Automation、Lambda 和 Step Functions 任務。如需 --task-invocation-parameters
內容中虛擬參數的詳細資訊,請參閱註冊維護時段任務時使用虛擬參數。
- 詳細資訊
-
-
《AWS CLI 命令參考》中的 register-task-with-maintenance-window 一節
-
AWS Systems Manager API 參考中的 RegisterTaskWithMaintenanceWindow
任務註冊範例
下列區段提供的範本 AWS CLI 命令可用來註冊可與 --cli-input-json
選項搭配使用的支援任務類型和 JSON 範本。
以下範例示範如何使用 AWS CLI 向維護時段註冊 Systems Manager Run Command 任務。
要與 --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:
region
:123456789012:my-sns-topic-name", "NotificationEvents": [ "All" ], "NotificationType": "Invocation" }, "OutputS3BucketName": "amzn-s3-demo-bucket", "OutputS3KeyPrefix": "S3-PREFIX
", "TimeoutSeconds": 3600 } } }
以下範例示範如何使用 AWS CLI 向維護時段註冊 Systems Manager Automation 任務:
AWS CLI 命令
要與 --cli-input-json
檔案選項搭配使用的 JSON 內容:
{ "WindowId": "mw-0c50858d01EXAMPLE", "TaskArn": "AWS-PatchInstanceWithRollback", "TaskType": "AUTOMATION","TaskInvocationParameters": { "Automation": { "DocumentVersion": "1", "Parameters": { "instanceId": [ "{{RESOURCE_ID}}" ] } } } }
以下範例示範如何使用 AWS CLI 向維護時段註冊 Lambda 函數任務。
對於這些範例,建立 Lambda 函數的使用者會將其命名為 SSMrestart-my-instances
並建立名為 instanceId
和 targetType
的兩個參數。
重要
適用於 Maintenance Windows 的 IAM 政策需要您為 Lambda 函數 (或別名) 名稱新增 SSM
字首。在繼續註冊這類任務前,請在 AWS Lambda 中將其名稱更新為包含 SSM
。例如,如果 Lambda 函數名稱為 MyLambdaFunction
,請變更為 SSMMyLambdaFunction
。
AWS CLI 命令
要與 --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": "{ \"instanceId\": \"{{RESOURCE_ID}}\", \"targetType\": \"{{TARGET_TYPE}}\" }", "Qualifier": "$LATEST" } }, "Name": "My-Lambda-Task", "Description": "A description for my LAMBDA task", "Priority": 5 }
以下範例示範如何使用 AWS CLI 向維護時段註冊 Step Functions 狀態機器任務。
注意
維護時段任務僅支援 Step Functions 標準狀態機器工作流程。這些任務不支援快速狀態機器工作流程。如需有關狀態機器工作流程類型的資訊,請參閱《AWS Step Functions 開發人員指南》中的標準與快速工作流程。
對於這些範例,建立步驟函數狀態機器的使用者會使用名為 instanceId
的參數建立名為 SSMMyStateMachine
的狀態機器。
重要
適用於 Maintenance Windows 的 AWS Identity and Access Management (IAM) 政策需要您為 Step Functions 狀態機器名稱加上 SSM
字首。在繼續註冊這類任務前,您必須在 AWS Step Functions 中將其名稱更新為包含 SSM
。例如,如果狀態機器名稱為 MyStateMachine
,請變更為 SSMMyStateMachine
。
AWS CLI 命令
要與 --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": "{ \"instanceId\": \"{{TARGET_ID}}\" }", "Name": "{{INVOCATION_ID}}" } }, "Name": "My-Step-Functions-Task", "Description": "A description for my Step Functions task", "Priority": 5 }