使用映像建置器建立自訂元件 - EC2 Image Builder

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

使用映像建置器建立自訂元件

完成元件文件後,您可以使用它來建立 Image Builder 配方可以使用的自訂元件。您可以從 Image Builder 主控台、API 或 SDKs 或命令列建立自訂元件。如需如何使用輸入參數建立自訂元件並在配方中使用它的詳細資訊,請參閱 教學課程:使用輸入參數建立自訂元件

下列各節說明如何從主控台或 建立元件 AWS CLI。

從主控台建立自訂元件

若要從 Image Builder 主控台建立 AWS TOE 應用程式元件,請遵循下列步驟:

  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/

  2. 從導覽窗格中選取元件。然後選取建立元件

  3. 建立元件頁面的元件詳細資訊下,輸入下列項目:

    1. 映像作業系統 (OS)。指定元件相容的作業系統。

    2. 元件類別。從下拉式清單中選取您要建立的建置或測試元件類型。

    3. 元件名稱。輸入元件的名稱。

    4. 元件版本。輸入元件的版本編號。

    5. 描述。提供選用的描述,協助您識別元件。

    6. 變更描述。提供選用的描述,以協助您了解對此版本元件所做的變更。

  4. 定義文件區段中,預設選項是定義文件內容。元件文件定義 Image Builder 在建置和測試執行個體上執行的動作,以建立映像。

    內容方塊中,輸入您的 YAML 元件文件內容。若要從 Linux 的 Hello World 範例開始,請選擇使用範例選項。若要進一步了解如何建立 YAML 元件文件,或從該頁面複製並貼上 UpdateOS 範例,請參閱 在映像建置器中為自訂元件建立 YAML 元件文件

  5. 輸入元件詳細資訊後,請選取建立元件

    注意

    若要在建立或更新配方時查看您的新元件,請將我擁有的篩選條件套用至建置或測試元件清單。篩選條件位於元件清單頂端,搜尋方塊旁。

  6. 若要刪除元件,請從元件頁面中選取您要刪除之元件旁的核取方塊。從動作下拉式清單中,選取刪除元件

更新元件

若要建立新的元件版本,請遵循下列步驟:

  1. 視您開始的位置而定:

    • 元件清單頁面 – 選取元件名稱旁的核取方塊,然後從動作功能表中選取建立新版本

    • 從元件詳細資訊頁面 – 選擇標題右上角的建立新版本按鈕。

  2. 顯示建立元件頁面時,元件資訊已填入目前的值。依照建立元件步驟來更新元件。這可確保您在元件版本中輸入唯一的語意版本。若要進一步了解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語意版本控制

從 建立自訂元件 AWS CLI

在本節中,您將了解如何在 中設定和使用 Image Builder 命令 AWS CLI 來建立 AWS TOE 應用程式元件,如下所示。

  • 將 YAML 元件文件上傳至 S3 儲存貯體,您可以從命令列參考。

  • 使用 create-component命令建立 AWS TOE 應用程式元件。

  • 使用 list-components命令和名稱篩選條件列出元件版本,以查看哪些版本已存在。您可以使用輸出來判斷更新應採用的下一個版本。

若要從輸入 YAML 文件建立 AWS TOE 應用程式元件,請遵循符合您映像作業系統平台的步驟。

Linux
將應用程式元件文件存放在 Amazon S3 中

您可以使用 S3 儲存貯體做為 AWS TOE 應用程式元件來源文件的儲存庫。若要存放元件文件,請依照下列步驟進行:

  • 將文件上傳至 Amazon S3

    如果您的文件小於 64 KB,您可以略過此步驟。大小為 64 KB 或更大的文件必須存放在 Amazon S3 中。

    aws s3 cp update-linux-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml
從 YAML 文件建立元件

若要簡化您在 中使用的create-component命令 AWS CLI,請建立 JSON 檔案,其中包含您要傳入命令的所有元件參數。包含您先前建立update-linux-os.yaml的文件位置。uri 鍵值對包含檔案參考。

注意

JSON 檔案中資料值的命名慣例遵循為 Image Builder API 操作請求參數指定的模式。若要檢閱 API 命令請求參數,請參閱 EC2 Image Builder API 參考中的 CreateComponent 命令。

若要提供資料值做為命令列參數,請參閱 AWS CLI 命令參考中指定的參數名稱。

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具來建立名為 的檔案create-update-linux-os-component.json。包含下列內容:

    { "name": "update-linux-os", "semanticVersion": "1.1.2", "description": "An example component that updates the Linux operating system", "changeDescription": "Initial version.", "platform": "Linux", "uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-linux-os.yaml", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c", "tags": { "MyTagKey-purpose": "security-updates" } }
  2. 建立元件

    使用下列命令來建立元件,並參考您在上一個步驟中建立的 JSON 檔案名稱:

    aws imagebuilder create-component --cli-input-json file://create-update-linux-os-component.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

Windows
將應用程式元件文件存放在 Amazon S3 中

您可以使用 S3 儲存貯體做為 AWS TOE 應用程式元件來源文件的儲存庫。若要存放元件文件,請依照下列步驟進行:

  • 將文件上傳至 Amazon S3

    如果您的文件小於 64 KB,您可以略過此步驟。大小為 64 KB 或更大的文件必須存放在 Amazon S3 中。

    aws s3 cp update-windows-os.yaml s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml
從 YAML 文件建立元件

若要簡化您在 中使用的create-component命令 AWS CLI,請建立 JSON 檔案,其中包含您要傳入命令的所有元件參數。包含您先前建立update-windows-os.yaml的文件位置。uri 鍵值對包含檔案參考。

注意

JSON 檔案中資料值的命名慣例遵循為 Image Builder API 操作請求參數指定的模式。若要檢閱 API 命令請求參數,請參閱 EC2 Image Builder API 參考中的 CreateComponent 命令。

若要提供資料值做為命令列參數,請參閱 AWS CLI 命令參考中指定的參數名稱。

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具建立名為 的檔案create-update-windows-os-component.json。包含下列內容:

    { "name": "update-windows-os", "semanticVersion": "1.1.2", "description": "An example component that updates the Windows operating system.", "changeDescription": "Initial version.", "platform": "Windows", "uri": "s3://amzn-s3-demo-destination-bucket/my-path/update-windows-os.yaml", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c", "tags": { "MyTagKey-purpose": "security-updates" } }
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

  2. 建立元件

    使用下列命令來建立元件,並參考您在上一個步驟中建立的 JSON 檔案名稱:

    aws imagebuilder create-component --cli-input-json file://create-update-windows-os-component.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

macOS
將應用程式元件文件存放在 Amazon S3 中

您可以使用 S3 儲存貯體做為 AWS TOE 應用程式元件來源文件的儲存庫。若要存放元件文件,請依照下列步驟進行:

  • 將文件上傳至 Amazon S3

    如果您的文件小於 64 KB,您可以略過此步驟。大小為 64 KB 或更大的文件必須存放在 Amazon S3 中。

    aws s3 cp wget-macos.yaml s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml
從 YAML 文件建立元件

若要簡化您在 中使用的create-component命令 AWS CLI,請建立 JSON 檔案,其中包含您要傳入命令的所有元件參數。包含您先前建立wget-macos.yaml的文件位置。uri 鍵值對包含檔案參考。

注意

JSON 檔案中資料值的命名慣例遵循為 Image Builder API 操作請求參數指定的模式。若要檢閱 API 命令請求參數,請參閱 EC2 Image Builder API 參考中的 CreateComponent 命令。

若要提供資料值做為命令列參數,請參閱 AWS CLI 命令參考中指定的參數名稱。

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具來建立名為 的檔案install-wget-macos-component.json。包含下列內容:

    { "name": "install install-wget-macos-component", "semanticVersion": "1.1.2", "description": "An example component that installs and verifies the wget utility on macOS.", "changeDescription": "Initial version.", "platform": "macOS", "uri": "s3://amzn-s3-demo-destination-bucket/my-path/wget-macos.yaml", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/98765432-b123-456b-7f89-0123456f789c", "tags": { "MyTagKey-purpose": "install-software" } }
  2. 建立元件

    使用下列命令來建立元件,參考您在上一個步驟中建立的 JSON 檔案名稱:

    aws imagebuilder create-component --cli-input-json file://install-wget-macos-component.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

    • JSON 檔案的路徑應遵循執行命令之基礎作業系統的適當慣例。例如,Windows 使用反斜線 (\) 來參考目錄路徑,而 Linux 和 macOS 則使用正斜線 (/)。

AWS TOE 從 更新元件版本控制 AWS CLI

AWS TOE 元件名稱和版本內嵌在元件的 Amazon Resource Name (ARN) 前綴。每個新版本的元件都有自己的唯一 ARN。建立新版本的步驟與建立新元件的步驟完全相同,只要語意版本對該元件名稱是唯一的。若要進一步了解 Image Builder 資源的語意版本控制,請參閱Image Builder 中的語意版本控制

為了確保您指派下一個邏輯版本,請先取得您要變更之元件的現有版本清單。使用 list-components命令搭配 AWS CLI,並篩選名稱。

在此範例中,您可以篩選您在先前 Linux 範例中建立的元件名稱。若要列出您建立的元件,請使用您在create-component命令中使用的 JSON 檔案的 name 參數值。

aws imagebuilder list-components --filters name="name",values="update-linux-os" { "requestId": "123a4567-b890-123c-45d6-ef789ab0cd1e", "componentVersionList": [ { "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.0", "name": "update-linux-os", "version": "1.0.0", "platform": "Linux", "type": "BUILD", "owner": "123456789012", "dateCreated": "2020-09-24T16:58:24.444Z" }, { "arn": "arn:aws:imagebuilder:us-west-2:1234560087789012:component/update-linux-os/1.0.1", "name": "update-linux-os", "version": "1.0.1", "platform": "Linux", "type": "BUILD", "owner": "123456789012", "dateCreated": "2021-07-10T03:38:46.091Z" } ] }

根據您的結果,您可以判斷下一個版本應該是什麼。

匯入指令碼以從 建立元件 AWS CLI

對於某些案例,從預先存在的指令碼開始可能更容易。在此案例中,您可以使用下列範例。

此範例假設您有一個名為 的檔案 import-component.json(如圖所示)。請注意, 檔案會直接參考名為 AdminConfig.ps1 的 PowerShell 指令碼,該指令碼已上傳至 amzn-s3-demo-source-bucket。目前 SHELL 支援元件 format

{ "name": "MyImportedComponent", "semanticVersion": "1.0.0", "description": "An example of how to import a component", "changeDescription": "First commit message.", "format": "SHELL", "platform": "Windows", "type": "BUILD", "uri": "s3://amzn-s3-demo-source-bucket/AdminConfig.ps1", "kmsKeyId": "arn:aws:kms:us-west-2:123456789012:key/60763706-b131-418b-8f85-3420912f020c" }

若要從匯入的指令碼建立元件,請執行下列命令。

aws imagebuilder import-component --cli-input-json file://import-component.json