在執行手冊中使用指令碼 - AWS Systems Manager

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

在執行手冊中使用指令碼

自動化 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 服務角色,則為啟動自動化執行之使用者的許可。

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

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

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

將指令碼新增至 Runbook

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

Runbook 的指令碼限制

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