使用 Image Builder 建立自訂元件 - 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 範例,請參閱 在 Image Builder 中建立自訂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" } }
    注意
    • 您必須在JSON檔案路徑的開頭包含 file:// 符號。

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

  2. 建立元件

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

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

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

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 會使用正斜線 (/)。

  2. 建立元件

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

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

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

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