使用維護時段排定自動化 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用維護時段排定自動化

您可以將 Runbook 設為維護時段的已註冊任務,以啟動自動化。透過將 Runbook 註冊為已註冊任務,維護時段便能在排程的維護時段期間執行自動化。

例如,假設您建立了名為 CreateAMI 的 Runbook,該 Runbook 會建立註冊為維護時段目標的執行個體 Amazon Machine Image (AMI)。若要指定 CreateAMI Runbook (和對應的自動化) 做為維護時段的已註冊任務,您必須先建立維護時段和註冊目標。然後您可以使用以下程序來指定 CreateAMI 文件做為維護時段內的已註冊任務。當維護時段在排程的期間啟動時,系統將執行自動化,並建立已註冊目標的 AMI。

如需建立 Automation Runbook 的資訊,請參閱 建立您自己的執行手冊。自動化是的一項功能 AWS Systems Manager。

使用下列程序,使用 AWS Systems Manager 主控台 AWS Command Line Interface (AWS CLI) 或將自動化設定為維護時段的已註冊工作 AWS Tools for Windows PowerShell。

向維護時段註冊自動化任務 (主控台)

以下程序會說明如何使用 Systems Manager 主控台將自動化設為維護時段的已註冊任務。

開始之前

您必須先建立維護時段並註冊至少一個目標,才能完成以下程序。如需詳細資訊,請參閱下列程序:

將自動化設為維護時段的已註冊任務
  1. 在開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在左側導覽窗格中,選擇 Maintenance Windows,然後選擇您希望註冊自動化任務的維護時段。

  3. 選擇動作。然後選擇 Register Automation task (註冊自動化任務),使用 Runbook 在目標上執行您所選的自動化。

  4. Name (名稱) 中,輸入任務的名稱。

  5. 描述中,輸入描述。

  6. Document (文件) 中,選擇定義要執行任務的 Runbook。

  7. Document Version (文件版本) 中,選擇要使用的 Runbook 版本。

  8. Task priority (任務優先順序) 中,為此任務選擇優先順序。1 是最高優先順序。維護時段內的任務都是以優先順序來排程;相同優先順序的任務會平行排程。

  9. Targets (目標) 區段中,如果您選擇的 Runbook 是在資源中執行任務中的一個,手動指定標籤或選取執行個體,以識別您要執行這項自動化的目標。

    注意

    如果您想要透過輸入參數而非目標傳遞資源,則不需要指定維護時段目標。

    在許多情況下,您不需要明確指定自動化任務的目標。例如,假設您正在建立 Automation 類型任務來使用 AWS-UpdateLinuxAmi Runbook 更新 Linux 的 Amazon Machine Image (AMI)。當任務執行時,AMI 已更新為可用的最新版本 Linux 發行版本套件和 Amazon 軟體。從 AMI 建立的新執行個體已經安裝這些更新。因為在 Runbook 的輸入參數中指定了要更新的 AMI ID,所以不需要在維護時段任務中再次指定目標。

    如需不需要目標之維護時段任務的相關資訊,請參閱 註冊不含目標的維護時段任務

  10. (選用) 在 Rate control (速率控制) 中:

    注意

    如果您正在執行的任務未指定目標,則不需要指定速率控制。

    • Concurrency (並行) 中,指定可同時執行自動化的目標數目或百分比。

      如果您已透過選擇標籤鍵值對來選取目標,而且不確定有多少目標會使用所選的標籤,請指定百分比來限制可同時執行的自動化數目。

      執行維護時段時,便會針對每個目標啟動新的自動化。每個 AWS 帳戶有 100 的並行自動化上限。如果您指定大於 100 的並行速率,超過 100 的並行自動化會自動加入到自動化佇列。如需相關資訊,請參閱《Amazon Web Services 一般參考》中的 Systems Manager 服務配額一節。

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

  11. Input Parameters (輸入參數) 區段中,指定 Runbook 的參數。對於 Runbook,系統會自動填入一些值。您可以保留或取代這些值。

    重要

    針對 Runbook,您可以選擇性指定自動化取得角色。若您沒有為此參數指定角色,自動化將取得您在步驟 11 中選擇的維護時段服務角色。因此,您必須確定您選擇的維護時段服務角色具有適當的 AWS Identity and Access Management (IAM) 權限來執行 runbook 中定義的動作。

    例如,Systems Manager 的服務連結角色沒有IAM權限ec2:CreateSnapshot,這是使用 runbook AWS-CopySnapshot 所需的權限。在此案例中,您必須使用自訂的維護時段服務角色,或指定具備 ec2:CreateSnapshot 許可的自動化取得角色。如需相關資訊,請參閱 設定自動化

  12. IAM服務角色區域中,選擇一個角色,以提供 Systems Manager 啟動自動化的權限。

    若要建立服務角色給維護視窗工作,請參閱 設定 Maintenance Windows

  13. 選擇 Register Automation task (註冊自動化任務)

向維護時段註冊自動化任務 (命令列)

下列程序說明如何使用 AWS CLI (在 Linux 或 Windows 上),或 AWS Tools for PowerShell 將自動化設定為維護時段的已註冊工作。

開始之前

您必須先建立維護時段並註冊至少一個目標,才能完成以下程序。如需詳細資訊,請參閱下列程序:

將自動化設為維護時段的已註冊任務
  1. 安裝和配置 AWS CLI 或 AWS Tools for PowerShell,如果您尚未安裝。

    如需相關資訊,請參閱安裝或更新 AWS CLI的最新版本安裝 AWS Tools for PowerShell

  2. 建立命令,將自動化設為維護時段的已註冊任務。替換每個 example resource placeholder 使用您自己的信息。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id window ID \ --name task name \ --task-arn runbook name \ --targets Key=targets,Values=value \ --service-role-arn IAM role arn \ --task-type AUTOMATION \ --task-invocation-parameters task parameters \ --priority task priority \ --max-concurrency 10% \ --max-errors 5
    注意

    如果您使用將自動化設定為已註冊工作 AWS CLI,請使用參數來指定在工作執行時要傳遞給工作的參數。--Task-Invocation-Parameters請勿使用 --Task-Parameters 參數。--Task-Parameters 參數是舊參數。

    對於未指定目標的維護時段任務,您無法提供 --max-errors--max-concurrency 的值。系統會插入預留位置值 1,這可能會在回應指令 (例如 describe-maintenance-window-tasksget-maintenance-window-task) 中回報。這些值不會影響任務的執行,可以忽略。

    如需不需要目標之維護時段任務的相關資訊,請參閱 註冊不含目標的維護時段任務

    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id window ID ^ --name task name ^ --task-arn runbook name ^ --targets Key=targets,Values=value ^ --service-role-arn IAM role arn ^ --task-type AUTOMATION ^ --task-invocation-parameters task parameters ^ --priority task priority ^ --max-concurrency 10% ^ --max-errors 5
    注意

    如果您使用將自動化設定為已註冊工作 AWS CLI,請使用參數來指定在工作執行時要傳遞給工作的參數。--task-invocation-parameters請勿使用 --task-parameters 參數。--task-parameters 參數是舊參數。

    對於未指定目標的維護時段任務,您無法提供 --max-errors--max-concurrency 的值。系統會插入預留位置值 1,這可能會在回應指令 (例如 describe-maintenance-window-tasksget-maintenance-window-task) 中回報。這些值不會影響任務的執行,可以忽略。

    如需不需要目標之維護時段任務的相關資訊,請參閱 註冊不含目標的維護時段任務

    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId window ID ` -Name "task name" ` -TaskArn "runbook name" ` -Target @{ Key="targets";Values="value" } ` -ServiceRoleArn "IAM role arn" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "task parameter"="task parameter value"} ` -Priority task priority ` -MaxConcurrency 10% ` -MaxError 5
    注意

    如果您使用將自動化設定為已註冊的工作 AWS Tools for PowerShell,請使用-Automation_Parameter參數來指定工作執行時要傳遞給工作的參數。請勿使用 -TaskParameters 參數。-TaskParameters 參數是舊參數。

    對於未指定目標的維護時段任務,您無法提供 -MaxError-MaxConcurrency 的值。相反地,系統會插入預留位置值 1,這可能會在回應指令 (例如 Get-SSMMaintenanceWindowTaskListGet-SSMMaintenanceWindowTask) 中回報。這些值不會影響任務的執行,可以忽略。

    如需不需要目標之維護時段任務的相關資訊,請參閱 註冊不含目標的維護時段任務

    以下範例會將自動化設為維護時段的已註冊任務,其優先順序為 1。它還演示了為無目標維護時段任務省略的 --targets--max-errors--max-concurrency 選項。自動化使用 AWS-StartEC2Instance runbook 和指定的自動化假定角色來啟動註冊為維護時段目標的EC2執行個體。維護時段在任何指定時間最多可以同時在 5 個執行個體上執行自動化。此外,如果錯誤計數超過 1 個,已註冊任務會在特定的間隔內於更多執行個體上停止執行。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --name StartEC2Instances \ --task-arn AWS-StartEC2Instance \ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole \ --task-type AUTOMATION \ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" \ --priority 1
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --name StartEC2Instances ^ --task-arn AWS-StartEC2Instance ^ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" ^ --priority 1
    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId mw-0c50858d01EXAMPLE ` -Name "StartEC2" ` -TaskArn "AWS-StartEC2Instance" ` -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } ` -Priority 1

    命令會傳回新已註冊任務的詳細資訊,該資訊與以下相似:

    Linux & macOS
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. 若要檢視已註冊的任務,請執行以下命令。Replace (取代) maintenance windows ID 使用您自己的信息。

    Linux & macOS
    aws ssm describe-maintenance-window-tasks \ --window-id maintenance window ID
    Windows
    aws ssm describe-maintenance-window-tasks ^ --window-id maintenance window ID
    PowerShell
    Get-SSMMaintenanceWindowTaskList ` -WindowId maintenance window ID

    系統會傳回相關資訊,如下所示。

    Linux & macOS
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    Windows
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    PowerShell
    Description    : 
    LoggingInfo    : 
    MaxConcurrency : 5
    MaxErrors      : 1
    Name           : StartEC2
    Priority       : 1
    ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
    Targets        : {}
    TaskArn        : AWS-StartEC2Instance
    TaskParameters : {}
    Type           : AUTOMATION
    WindowId       : mw-0c50858d01EXAMPLE
    WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE