本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用維護時段排定自動化
您可以將 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 主控台將自動化設為維護時段的已註冊任務。
開始之前
您必須先建立維護時段並註冊至少一個目標,才能完成以下程序。如需詳細資訊,請參閱下列程序:
將自動化設為維護時段的已註冊任務
在 https://https://console.aws.amazon.com/systems-manager/ 開啟 AWS Systems Manager 主控台。
-
在左側導覽窗格中,選擇 Maintenance Windows,然後選擇您希望註冊自動化任務的維護時段。
-
選擇動作。然後選擇 Register Automation task (註冊自動化任務),使用 Runbook 在目標上執行您所選的自動化。
-
在 Name (名稱) 中,輸入任務的名稱。
-
在描述中,輸入描述。
-
在 Document (文件) 中,選擇定義要執行任務的 Runbook。
-
在 Document Version (文件版本) 中,選擇要使用的 Runbook 版本。
-
在 Task priority (任務優先順序) 中,為此任務選擇優先順序。1 是最高優先順序。維護時段內的任務都是以優先順序來排程;相同優先順序的任務會平行排程。
-
在 Targets (目標) 區段中,如果您選擇的 Runbook 是在資源中執行任務中的一個,手動指定標籤或選取執行個體,以識別您要執行這項自動化的目標。
如果您想要透過輸入參數而非目標傳遞資源,則不需要指定維護時段目標。
在許多情況下,您不需要明確指定自動化任務的目標。例如,假設您正在建立 Automation 類型任務來使用 AWS-UpdateLinuxAmi Runbook 更新 Linux 的 Amazon Machine Image (AMI)。當任務執行時,AMI 已更新為可用的最新版本 Linux 發行版本套件和 Amazon 軟體。從 AMI 建立的新執行個體已經安裝這些更新。因為在 Runbook 的輸入參數中指定了要更新的 AMI ID,所以不需要在維護時段任務中再次指定目標。
如需不需要目標之維護時段任務的相關資訊,請參閱 註冊不含目標的維護時段任務。
-
(選用) 在 Rate control (速率控制) 中:
如果您正在執行的任務未指定目標,則不需要指定速率控制。
-
在 Concurrency (並行) 中,指定可同時執行自動化的目標數目或百分比。
如果您已透過選擇標籤鍵值對來選取目標,而且不確定有多少目標會使用所選的標籤,請指定百分比來限制可同時執行的自動化數目。
執行維護時段時,便會針對每個目標啟動新的自動化。每個 AWS 帳戶有 100 的並行自動化上限。如果您指定大於 100 的並行速率,超過 100 的並行自動化會自動加入到自動化佇列。如需相關資訊,請參閱《Amazon Web Services 一般參考》中的 Systems Manager 服務配額一節。
-
在 Error threshold (錯誤閾值) 中,指定在特定數目或百分比目標上的自動化失敗後,停止在其他目標上執行。例如,如果您指定三個錯誤,則 Systems Manager 會在收到第四個錯誤時停止執行自動化。仍在處理自動化的目標也可能傳送錯誤。
-
在 Input Parameters (輸入參數) 區段中,指定 Runbook 的參數。對於 Runbook,系統會自動填入一些值。您可以保留或取代這些值。
針對 Runbook,您可以選擇性指定自動化取得角色。若您沒有為此參數指定角色,自動化將取得您在步驟 11 中選擇的維護時段服務角色。因此,您必須確保您選擇的維護時段服務角色具有適當的 AWS Identity and Access Management (IAM) 許可,可執行 Runbook 中定義的動作。
例如,Systems Manager 的服務連結角色不具備 IAM 許可 ec2:CreateSnapshot,該許可是執行 Runbook AWS-CopySnapshot 所需要的許可。在此案例中,您必須使用自訂的維護時段服務角色,或指定具備 ec2:CreateSnapshot 許可的自動化取得角色。如需相關資訊,請參閱設定自動化。
-
在 IAM service role (IAM 服務角色) 區域,選擇角色以提供授權給 Systems Manager 並開始自動化。
若要建立服務角色給維護視窗工作,請參閱 設定 Maintenance Windows。
-
選擇 Register Automation task (註冊自動化任務)。
向維護時段註冊自動化任務 (命令列)
下列程序說明如何使用 AWS CLI (在 Linux 或 上Windows Server) 或 AWS Tools for PowerShell ,將自動化設定為維護時段的已註冊任務。
開始之前
您必須先建立維護時段並註冊至少一個目標,才能完成以下程序。如需詳細資訊,請參閱下列程序:
將自動化設為維護時段的已註冊任務
AWS Tools for PowerShell如果您尚未安裝和設定 AWS CLI 或 。
如需相關資訊,請參閱安裝或更新 AWS CLI的最新版本和安裝 AWS Tools for PowerShell。
-
建立命令,將自動化設為維護時段的已註冊任務。將每個範例資源預留位置取代為您自己的資訊。
- 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
- 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
- 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
-
若要檢視已註冊的任務,請執行以下命令。把維護視窗 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