View a markdown version of this page

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

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板,就像現在一樣。如需詳細資訊,請參閱 Amazon CloudWatch Dashboard 文件。

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

使用維護時段排定自動化

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

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

如需建立 Automation Runbook 的資訊,請參閱 建立您自己的執行手冊。Automation 是 AWS Systems Manager中的工具。

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

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

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

開始之前

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

將自動化設為維護時段的已註冊任務
  1. 在 https://https://console.aws.amazon.com/systems-manager/ 開啟 AWS 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 service role (IAM 服務角色) 區域,選擇角色以提供授權給 Systems Manager 並開始自動化。

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

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

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

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

開始之前

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

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

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

  2. 建立命令,將自動化設為維護時段的已註冊任務。將每個範例資源預留位置取代為您自己的資訊。

    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-tasks 和 get-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-tasks 和 get-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-SSMMaintenanceWindowTaskList 和 Get-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. 若要檢視已註冊的任務,請執行以下命令。把維護視窗 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