建立執行指令碼的 Runbook - AWS Systems Manager

建立執行指令碼的 Runbook

自動化 Runbook 支援在自動化時執行指令碼。自動化是 AWS Systems Manager 的功能。透過使用 Runbook,您可以直接在 AWS 中執行指令碼,而無需建立個別的運算環境來執行指令碼。因為 Runbooks 可以與其他自動化步驟類型 (例如核准) 一起執行指令碼步驟,所以您可在嚴重或不明確的情況下手動介入。您可以從 Runbook 中的 aws:executeScript 動作傳送輸出到 Amazon CloudWatch Logs。如需更多詳細資訊,請參閱 使用 CloudWatch Logs 記錄自動化動作輸出

使用 Runbook 的許可

若要使用 Runbook,Systems Manager 必須使用 AWS Identity and Access Management (IAM) 角色的許可。自動化用來判斷要使用角色的許可的方法取決於幾個因素,以及步驟是否使用 aws:executeScript 動作。

對於不使用 aws:executeScript 的 Runbook,Automation 會使用兩個許可來源的其中一個:

  • Runbook 中指定或作為參數傳入的 IAM 服務角色或擔任角色的許可。

  • 如果未指定 IAM 服務角色,則為開始自動化執行之 IAM 使用者的許可。

但是,當 Runbook 中的步驟包含 aws:executeScript 動作時,如果為動作指定的 Python 或 PowerShell 指令碼正在呼叫任何 AWS API 動作,則一律需要 IAM 服務角色 (擔任角色)。自動化會以下列順序檢查此角色:

  • Runbook 中指定或作為參數傳入的 IAM 服務角色或擔任角色的許可。

  • 如果找不到任何角色,自動化會嘗試執行為 aws:executeScript 指定的 Python 或 PowerShell 指令碼,而不使用任何許可。如果指令碼呼叫的是 AWS API 操作 (例如 Amazon EC2 CreateImage 操作),或嘗試對 AWS 資源 (例如 EC2 執行個體) 執行動作,則包含指令碼的步驟會失敗,並且 Systems Manager 會傳回報失敗的錯誤訊息。

如需如何執行使用 IAM 服務角色或改為使用更進階形式委派管理 Runbook 的資訊,請參閱 使用 IAM 服務角色執行自動化

將指令碼新增至 Runbook

您可以在 Runbook 中將指令碼內嵌做為步驟的一部分,將指令碼新增至 Runbook。您也可以從本機機器上傳指令碼或指定指令碼所在的 Amazon Simple Storage Service (Amazon S3) 儲存貯體,將指令碼連接至 Runbook。執行指令碼的步驟完成後,指令碼的輸出會以 JSON 物件的形式提供,然後您可以將該輸出做為 Runbook 中後續步驟的輸入。

Runbook 的指令碼限制

自動化動作 aws:executeScript 支援執行 Python 3.6、Python 3.7 和 PowerShell Core 6.0 指令碼。

Runbook 會強制執行五個檔案附件的限制。指令碼可以使用 Python 指令碼 (.py) 的形式、PowerShell Core 指令碼 (.ps1),或附加為 .zip 檔案中的內容。

您的帳戶需支付使用自動化執行指令碼的費用。使用動作 aws:executeScript 的自動化步驟被視為特殊步驟。特殊步驟沒有步驟限制,但是會根據指令碼執行的步驟數目和持續時間向您的帳戶收費。如需詳細資訊,請參閱 AWS Systems Manager 定價頁面。

下列主題說明如何建立可執行指令碼的 Runbook。