使用 Image Builder 立自訂元件 - EC2Image Builder

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

使用 Image Builder 立自訂元件

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

下列各節說明如何從主控台或 AWS CLI.

從主控台建立自訂元件

若要建立 AWS TOE Image Builder 主控台的應用程式元件,請依照下列步驟執行

  1. 在開啟映 EC2 Image Builder 主控台https://console.aws.amazon.com/imagebuilder/

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

  3. 在 [建立元件] 頁面的 [元件詳細資訊] 底下,輸入下列內容:

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

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

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

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

    5. 描述。提供可選描述以協助您識別元件。

    6. 變更說明。提供選擇性描述,以協助您瞭解對此版本元件所做的變更。

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

    在「內」方塊中,輸入YAML元件文件內容。若要從 Linux 的「你好世界」範例開始,請選擇「使用範例」選項。若要深入瞭解如何建立YAML元件文件,或從該頁面複製並貼上 UpdateOS 範例,請參閱在 Image Builder 生器中為自訂YAML元件建立元件文件

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

    注意

    若要在建立或更新方案時查看新元件,請將 [我擁有] 篩選器套用至組建或測試元件清單。篩選器位於元件清單頂端,位於搜尋方塊旁邊。

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

更新元件

若要建立新的元件版本,請依照下列步驟執行:

  1. 根據您從哪裡開始:

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

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

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

從中建立自訂元件 AWS CLI

在本節中,您將學習如何設定和使用 Image Builder 指令 AWS CLI 以建立 AWS TOE 應用程式元件,如下所示。

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

  • 創建 AWS TOE 應用程序組件與create-component命令。

  • 使用list-components指令和名稱篩選列示元件版本,以查看已存在的版本。您可以使用輸出來確定下一個版本應該是什麼更新。

若要建立 AWS TOE 來自輸入YAML文檔的應用程序組件,請遵循與您的圖像操作系統平台匹配的步驟。

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令請求參數,請參閱 EC2Image 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令請求參數,請參閱 EC2Image 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 資源名稱 (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