建立複合文件 - AWS Systems Manager

建立複合文件

複合的 AWS Systems Manager (SSM) 文件是一種自訂文件,透過驅動一個或多個次要 SSM 文件來執行一系列動作。複合文件提升了 infrastructure as code,讓您能夠為常見任務建立一組標準的 SSM 文件,例如自舉軟體或網域加入執行個體。然後,您可以在相同 AWS 區域 的 AWS 帳戶 間共用這些文件,以降低 SSM 文件的維護成本和確保一致性。

例如,您可以建立複合的文件來執行下列動作:

  1. 將 SSM Agent 更新至最新版本

  2. 安裝允許清單中的所有修補程式。

  3. 安裝防毒軟體

  4. 從 GitHub 下載指令碼然後執行它們。

在這個範例中,自訂 SSM 文件中包含下列外掛程式以執行下列動作:

  1. 用於執行 AWS-UpdateSSMAgent 文件的 aws:runDocument 外掛程式,可將 AWS Systems Manager SSM Agent 更新到最新版本。

  2. 用於執行舊版 AWS-ApplyPatchBaseline 文件的 aws:runDocument 外掛程式,可安裝所有允許列出的修補程式。

  3. 用於執行 AWS-InstallApplication 文件的 aws:runDocument 外掛程式,可安裝防毒軟體。

  4. aws:downloadContent 的外掛程式能夠從 GitHub 下載指令碼並執行。

複合和次要文件可以存放在 Systems Manager、GitHub (公有和私有儲存庫) 或 Amazon S3。您可以用 JSON 或 YAML格式建立複合文件和次要文件。

注意

複合文件的執行深度最多只能為三個文件。這表示複合文件可以呼叫一個子文件,以及該子文件可以再呼叫一個文件。

建立複合文件

若要建立複合文件,需要在自訂 SSM 文件中新增 aws:runDocument 外掛程式,並指定所需的輸入。下列的範例是個建立複合的文件來執行下列動作:

  1. 執行 aws:downloadContent 外掛程式,將 SSM 文件從 GitHub 公有儲存庫下載到本機目錄 (稱為 bootstrap)。此 SSM 文件稱為 StateManagerBootstrap.yml (YAML 文件)。

  2. 執行 aws:runDocument 外掛程式,以執行 StateManagerBootstrap.yml 文件。無需指定參數。

  3. 執行 aws:runDocument 外掛程式,以執行 AWS-ConfigureDocker pre-defined SSM 文件。指定的參數在執行個體上安裝 Docker。

{ "schemaVersion": "2.2", "description": "My composite document for bootstrapping software and installing Docker.", "parameters": { }, "mainSteps": [ { "action": "aws:downloadContent", "name": "downloadContent", "inputs": { "sourceType": "GitHub", "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}", "destinationPath": "bootstrap" } }, { "action": "aws:runDocument", "name": "runDocument", "inputs": { "documentType": "LocalPath", "documentPath": "bootstrap", "documentParameters": "{}" } }, { "action": "aws:runDocument", "name": "configureDocker", "inputs": { "documentType": "SSMDocument", "documentPath": "AWS-ConfigureDocker", "documentParameters": "{\"action\":\"Install\"}" } } ] }