使用維護時段傳送命令以傳回狀態通知 - AWS Systems Manager

使用維護時段傳送命令以傳回狀態通知

以下程序示範如何使用 AWS Systems Manager 主控台或 AWS Command Line Interface (AWS CLI) 向維護時段註冊 Run Command 任務。Run Command 是 AWS Systems Manager 的功能。此程序也說明如何將 Run Command 任務設定為傳回狀態通知。

開始之前

如果您尚未建立維護時段或註冊目標,請參閱使用維護時段 (主控台),以了解如何建立維護時段和註冊目標的步驟。

若要接收來自 Amazon Simple Notification Service (Amazon SNS) 服務的通知,您必須將 iam:PassRole 政策連接到已註冊任務中指定的 Maintenance Windows 服務角色。如果您尚未將 iam:PassRole 許可新增至 Maintenance Windows 服務角色,請參閱 任務 5:將 iam:PassRole 政策連接至維護時段角色

向維護時段註冊Run Command任務以傳回通知 (主控台)

使用下列程序註冊 Run Command 任務,它已設定為使用 Systems Manager 主控台向您的維護時段傳回狀態通知。

向維護時段註冊Run Command任務以傳回通知 (主控台)

  1. 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的 主控台。https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Maintenance Windows

    -或-

    如果 AWS Systems Manager 首頁先開啟,選擇選單圖示 ( ) 以開啟導覽窗格,然後選擇 Maintenance Windows

  3. 選取您要為已設定為傳送 Amazon Simple Notification Service (Amazon SNS) 通知的 Run Command 任務進行註冊的維護時段。

  4. 選擇 Actions (動作),然後選擇 Register Run command task (註冊執行命令任務)。

  5. (選用) 在 Name (名稱) 欄位中,輸入任務的名稱。

  6. (選用) 在 Description (描述) 欄位中,輸入描述。

  7. 對於 Command document (命令文件),選擇一個命令文件。

  8. 對於 Task priority (任務優先順序),請指定此任務的優先順序。零 (0) 是最高的優先順序。維護時段中的任務會依優先順序排程。具有相同優先順序的任務會排程平行處理。

  9. Targets (目標) 區段中,選取已註冊的目標群組或選取未註冊的目標。

  10. 對於 Rate control (速率控制):

    • Concurrency (並行) 中,指定可同時執行命令的受管節點數目或百分比。

      注意

      如果透過指定套用至受管節點的標籤或指定 AWS 資源群組選取了目標,且您不確定會以多少個受管節點為目標,則透過指定百分比限制可以同時執行文件之目標的數量。

    • Error threshold (錯誤閾值) 中,指定在特定數目或百分比之節點上的命令失敗之後,停止在其他受管節點上執行命令。例如,如果您指定三個錯誤,則 Systems Manager 會在收到第四個錯誤時停止傳送命令。仍在處理命令的受管節點也可能會傳送錯誤。

  11. IAM service role (IAM 服務角色) 區域中,選擇具有 SNS 角色 iam:PassRole 許可的 Maintenance Windows 服務角色。

    注意

    iam:PassRole 許可新增至 Maintenance Windows 角色,以允許 Systems Manager 將 SNS 角色 傳遞至 Amazon SNS。如果您尚未新增 iam:PassRole 許可,請參閱使用 Amazon SNS 通知監控 Systems Manager 狀態變更主題中的任務 5。

  12. (選用) 針對 Output options (輸出選項),若要將命令輸出儲存至檔案,請選取 Enable writing output to S3 (啟用將輸出寫入 S3) 方塊。在方塊中輸入儲存貯體和字首 (資料夾) 名稱。

    注意

    授予能力以將資料寫入至 S3 儲存貯體的 S3 許可,會是指派給受管節點之執行個體設定檔的許可,而不是執行此任務之 IAM 使用者的許可。如需詳細資訊,請參閱建立適用於 Systems Manager 的 IAM 執行個體設定檔或者建立適用於混合環境的 IAM 服務角色。此外,若指定的 S3 儲存貯體位於不同的 AWS 帳戶 內,請驗證與受管節點相關聯的執行個體設定檔或 IAM 服務角色是否具有寫入該儲存貯體的必要許可。

  13. SNS notifications (SNS 通知) 區段中,執行以下操作:

    • 選擇 Enable SNS Notifications (啟用 SNS 通知)。

    • 對於 IAM role (IAM 角色),選擇您在 使用 Amazon SNS 通知監控 Systems Manager 狀態變更 中的任務 3 中建立的 Amazon SNS IAM 角色 Amazon Resource Name (ARN),以啟動 Amazon SNS。

    • 對於 SNS topic (SNS 主題),輸入要使用的 Amazon SNS 主題 ARN。

    • 對於 Event type (事件類型),選擇您要接收通知的事件。

    • 對於 Notification type (通知類型),選擇是要接收傳送到多個節點 (叫用) 的每個命令複本的通知,還是接收命令摘要的通知。

  14. Parameters (參數) 區段,根據您選擇的命令文件輸入所需的參數。

  15. 選擇 Register run command task (註冊執行命令任務)。

  16. 在下一次執行維護時段後,請檢查您的電子郵件是否有來自 Amazon SNS 的訊息並開啟該電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送該電子郵件訊息。

向維護時段註冊Run Command任務以傳回通知 (CLI)

使用下列程序,來註冊已設定為使用 AWS CLI 向維護時段傳回狀態通知的 Run Command 任務。

向會傳回通知的維護時段註冊 Run Command 任務 (CLI)

注意

為了更有效地管理任務選項,這個程序會將命令選項 --cli-input-json 與在 JSON 檔案中存放的選項值搭配使用。

  1. 在本機電腦上,建立名為 RunCommandTask.json 的檔案。

  2. 將以下內容貼到 檔案。

    { "Name": "Name", "Description": "Description", "WindowId": "mw-0c50858d01EXAMPLE", "ServiceRoleArn": "arn:aws:iam::account-id:role/MaintenanceWindowIAMRole", "MaxConcurrency": "1", "MaxErrors": "1", "Priority": 3, "Targets": [ { "Key": "WindowTargetIds", "Values": [ "e32eecb2-646c-4f4b-8ed1-205fbEXAMPLE" ] } ], "TaskType": "RUN_COMMAND", "TaskArn": "CommandDocumentName", "TaskInvocationParameters": { "RunCommand": { "Comment": "Comment", "TimeoutSeconds": 3600, "NotificationConfig": { "NotificationArn": "arn:aws:sns:region:account-id:SNSTopicName", "NotificationEvents": [ "All" ], "NotificationType": "Command" }, "ServiceRoleArn": "arn:aws:iam::account-id:role/SNSIAMRole" } } }
  3. 將範例值取代為您自有資源的相關資訊。

    如果您想要使用在這個範例中省略的選項,也可以將其恢復。例如,您可以將命令輸出儲存到 S3 儲存貯體。

    如需詳細資訊,請參閱《AWS CLI 命令參考》中的 register-task-with-maintenance-window

  4. 儲存檔案。

  5. 在檔案儲存所在之本機電腦上的目錄中,執行下列命令。

    aws ssm register-task-with-maintenance-window --cli-input-json file://RunCommandTask.json
    重要

    請確認在檔案名稱之前包含 file://。這是此命令必要項目。

    如果成功,此命令會傳回類似如下的資訊。

    {
        "WindowTaskId": "j2l8d5b5c-mw66-tk4d-r3g9-1d4d1EXAMPLE"
    }
                        
  6. 在下一次執行維護時段後,請檢查您的電子郵件是否有來自 Amazon SNS 的訊息並開啟該電子郵件訊息。Amazon SNS 可能需要幾分鐘的時間來傳送該電子郵件訊息。

如需透過命令列向維護時段註冊任務的詳細資訊,請參閱向維護時段註冊任務