本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Systems Manager Automation Runbook 整合在 Incident Manager 中以修復事件
您可以使用 中的工具 AWS Systems Manager Automation 的 Runbook AWS Systems Manager,來自動化 AWS 雲端 環境中常見的應用程式和基礎設施任務。
每個 Runbook 都會定義 Runbook 工作流程,由 Systems Manager 在您的受管節點或其他 AWS 資源類型上執行的動作組成。您可以使用 Runbook 自動化資源 AWS 的維護、部署和修復。
在 Incident Manager 中, Runbook 會驅動事件回應和緩解,而您會指定 Runbook 做為回應計劃的一部分。
在您的回應計劃中,您可以從數十個預先設定的執行手冊中,為一般自動化任務進行選擇,也可以建立自訂執行手冊。當您在回應計劃定義中指定 Runbook 時,系統可在事件開始時自動啟動 Runbook。
重要
跨區域容錯移轉建立的事件不會叫用回應計劃中指定的 Runbook。
如需 Systems Manager 自動化、執行手冊和搭配 Incident Manager 使用執行手冊的詳細資訊,請參閱下列主題:
-
若要將 Runbook 新增至回應計劃,請參閱 在 Incident Manager 中建立和設定回應計劃。
-
若要進一步了解 Runbook,請參閱 AWS Systems Manager 使用者指南中的AWS Systems Manager 自動化和 AWS Systems Manager Automation Runbook 參考。
-
如需使用 Runbook 的成本資訊,請參閱 Systems Manager 定價
。 -
如需在 Amazon CloudWatch 警示或 Amazon EventBridge 事件建立事件時自動叫用 Runbook 的資訊,請參閱教學課程:搭配 Incident Manager 使用 Systems Manager Automation Runbook。
啟動和執行 Runbook 工作流程所需的 IAM 許可
Incident Manager 需要許可,才能在事件回應中執行 Runbook。若要提供這些許可,您可以使用 AWS Identity and Access Management (IAM) 角色、 Runbook 服務角色和 Automation AssumeRole
。
Runbook 服務角色是必要的服務角色。此角色為 Incident Manager 提供存取和啟動 Runbook 工作流程所需的許可。
自動化AssumeRole
提供執行 Runbook 中指定的個別命令所需的許可。
注意
如果未指定AssumeRole
任何 ,Systems Manager Automation 會嘗試針對個別命令使用 Runbook 服務角色。如果您未指定 AssumeRole
,則必須將必要的許可新增至 Runbook 服務角色。如果沒有,則 Runbook 無法執行這些命令。
不過,根據安全最佳實務,我們建議您使用不同的 AssumeRole
。使用單獨的 AssumeRole
,您可以限制您必須新增至每個角色的必要許可。
如需自動化 的詳細資訊AssumeRole
,請參閱AWS Systems Manager 《 使用者指南》中的設定自動化的服務角色 (擔任角色) 存取。
您可以在 IAM 主控台中自行手動建立任一類型的角色。- 您也可以讓 Incident Manager 在建立或更新回應計劃時為您建立任一類型的角色。
Runbook 服務角色許可
Runbook 服務角色許可是透過類似下列的政策提供。
第一個陳述式可讓 Incident Manager 啟動 Systems Manager StartAutomationExecution
操作。然後,此操作會在由三種 Amazon Resource Name (ARN) 格式表示的資源上執行。
第二個陳述式允許 Runbook 服務角色在受影響的帳戶中執行 Runbook 時,在另一個帳戶中擔任角色。如需詳細資訊,請參閱AWS Systems Manager 《 使用者指南》中的在多個 AWS 區域 和 帳戶中執行自動化。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:*:{{DocumentAccountId}}:automation-definition/{{DocumentName}}:*", "arn:aws:ssm:*:{{DocumentAccountId}}:document/{{DocumentName}}:*", "arn:aws:ssm:*::automation-definition/{{DocumentName}}:*" ] }, { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::*:role/AWS-SystemsManager-AutomationExecutionRole", "Condition": { "StringEquals": { "aws:CalledViaLast": "ssm.amazonaws.com" } } } ] }
Automation AssumeRole 許可
當您建立或更新回應計劃時,您可以從數個 AWS 受管政策中選擇連接到 Incident Manager 建立的 AssumeRole。這些政策提供許可,以執行在 Incident Manager Runbook 案例中使用的許多常見操作。您可以選擇一或多個這些受管政策來提供
AssumeRole
政策的許可。下表說明從
AssumeRole
Incident Manager 主控台建立 時可以選擇的政策。
AWS 受管政策名稱 | 政策描述 |
---|---|
AmazonSSMAutomationRole |
准許 Systems Manager Automation 服務執行 Runbook 中定義的活動。將此政策指派給管理員和信任的高權限使用者。 |
AWSIncidentManagerResolverAccess |
准許使用者啟動、檢視和更新事件。您也可以使用它們在事件儀表板中建立客戶時間軸事件和相關項目。 |
您可以使用這些受管政策,授予許多常見事件回應案例的許可。不過,您需要的特定任務所需的許可可能會有所不同。在這些情況下,您需要為 提供額外的政策許可AssumeRole
。如需詳細資訊,請參閱 AWS Systems Manager Automation Runbook 參考。
使用 Runbook 參數
將 Runbook 加入回應計劃時,您可以指定 Runbook 在執行時間應使用的參數。回應計劃支援具有靜態和動態值的參數。對於靜態值,您可以在定義回應計劃中的參數時輸入值。對於動態值,系統會透過從事件中收集資訊來確定正確的參數值。Incident Manager 支援以下動態參數:
Incident ARN
-
當 Incident Manager 建立事件時,系統會擷取對應事件記錄的 Amazon Resource Name (ARN),並在 Runbook 中為此參數輸入該名稱。
注意
此值只能指派給
String
類型的參數。如果指派給任何其他類型的參數,則無法執行 Runbook。 Involved resources
-
當 Incident Manager 建立事件時,系統會擷取事件所涉及資源的 ARN。然後,這些資源 ARN 會指派給 Runbook 中的此參數。
關於相關聯的資源
Incident Manager 可以將 CloudWatch 警示、EventBridge 事件和手動建立的事件中指定的 AWS 資源 ARNs 填入 Runbook 參數值。本節說明在填入此參數時,Invent Manager 可以擷取 ARNs的不同類型的資源。
CloudWatch 警示
從 CloudWatch 警示動作建立事件時,Invent Manager 會自動從相關聯的指標擷取下列類型的資源。然後,它會將下列涉及的資源填入所選的參數:
AWS 服務 | 資源類型 |
---|---|
Amazon DynamoDB |
全域次要索引 串流 資料表 |
Amazon EC2 |
映像 執行個體 |
AWS Lambda |
函數別名 函數版本 函數 |
Amazon Relational Database Service (Amazon RDS) |
叢集 資料庫執行個體 |
Amazon Simple Storage Service (Amazon S3) |
儲存貯體 |
EventBridge 規則
當系統從 EventBridge 事件建立事件時,Invent Manager 會在事件中將所選參數填入 Resources
屬性。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的 Amazon EventBridge 事件。
手動建立的事件
當您使用 StartIncident API 動作來建立事件時,Incident Manager 會使用 API 呼叫中的資訊填入選取的參數。具體而言,它會使用在 參數中傳遞的類型項目INVOLVED_RESOURCE
來填入relatedItems
參數。
注意
該INVOLVED_RESOURCES
值只能指派給類型 的參數StringList
。如果指派給任何其他類型的參數,則無法執行 Runbook。
定義 Runbook
建立 Runbook 時,您可以遵循此處提供的步驟,也可以遵循 Systems Manager 使用者指南中的使用 Runbook 一節所提供的更詳細指南。 如果您要建立多帳戶、多區域 Runbook,請參閱 Systems Manager 使用者指南中的在多個 AWS 區域 和 帳戶中執行自動化。
定義 Runbook
-
在 https://https://console.aws.amazon.com/systems-manager/
開啟 Systems Manager 主控台。 -
在導覽窗格中,選擇 Documents (文件)。
-
選擇 Create automation (建立自動化)。
-
輸入唯一且可識別的 Runbook 名稱。
-
輸入 Runbook 的描述。
-
為要擔任的自動化文件提供 IAM 角色。這可讓 Runbook 自動執行命令。如需詳細資訊,請參閱設定自動化工作流程的服務角色存取。
-
(選用) 新增 Runbook 開頭的任何輸入參數。您可以在啟動 Runbook 時使用動態或靜態參數。動態參數會使用 Runbook 啟動之事件中的值。靜態參數會使用您提供的值。
-
(選用) 新增目標類型。
-
(選用) 新增標籤。
-
填寫執行手冊執行時將採取的步驟。每個步驟都需要:
-
名稱。
-
步驟用途的描述。
-
步驟期間要執行的動作。Runbook 使用暫停動作類型來描述手動步驟。
-
(選用) 命令屬性。
-
-
新增所有必要的 Runbook 步驟後,選擇建立自動化。
若要啟用跨帳戶功能,請將管理帳戶中的 Runbook 與事件期間使用 Runbook 的所有應用程式帳戶共用。
共用 Runbook
-
在 https://https://console.aws.amazon.com/systems-manager/
開啟 Systems Manager 主控台。 -
在導覽窗格中,選擇 Documents (文件)。
-
在文件清單中,選擇您要共用的文件,然後選擇檢視詳細資訊。在 Permissions (許可) 索引標籤中,驗證您是文件的擁有者。只有文件擁有者可以分享文件。
-
選擇編輯。
-
若要公開共享命令,選擇 Public (公有),然後選擇 Save (儲存)。若要私下共用命令,請選擇私有、輸入 AWS 帳戶 ID、選擇新增許可,然後選擇儲存。
Incident Manager Runbook 範本
Incident Manager 提供下列 Runbook 範本,以協助您的團隊開始在 Systems Manager 自動化中編寫 Runbook。您可以照原樣使用此範本,或對其進行編輯,以包含應用程式和資源的特定詳細資訊。
尋找 Incident Manager Runbook 範本
-
在 https://https://console.aws.amazon.com/systems-manager/
開啟 Systems Manager 主控台。 -
在導覽窗格中,選擇 Documents (文件)。
-
在文件區域中,
AWSIncidents-
在搜尋欄位中輸入 以顯示所有 Incident Manager Runbook。提示
輸入
AWSIncidents-
做為任意文字,而不是使用文件名稱字首篩選條件選項。
使用範本
-
在 https://https://console.aws.amazon.com/systems-manager/
開啟 Systems Manager 主控台。 -
在導覽窗格中,選擇 Documents (文件)。
-
從文件清單中選擇您要更新的範本。
-
選擇內容索引標籤,然後複製文件的內容。
-
在導覽窗格中,選擇 Documents (文件)。
-
選擇 Create automation (建立自動化)。
-
輸入唯一且可識別的名稱。
-
選擇編輯器索引標籤。
-
選擇編輯。
-
在文件編輯器區域中貼上或輸入複製的詳細資訊。
-
選擇 Create automation (建立自動化)。
AWSIncidents-CriticalIncidentRunbookTemplate
AWSIncidents-CriticalIncidentRunbookTemplate
是一個範本,可在手動步驟中提供 Incident Manager 事件生命週期。這些步驟非常通用,可用於大多數應用程式,但詳細程度足以讓回應者開始使用事件解決。