創建和更新 AMI 分發配置 - EC2 Image Builder

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

創建和更新 AMI 分發配置

本節涵蓋建立和更新 Image Builder AMI 的發佈組態。

從控制台創建 AMI 分發配置

散發組態包括輸出 AMI 名稱、加密的特定區域設定、啟動權限 AWS 帳戶,以及可啟動輸出 AMI 的組織和組織單位 (OU),以及授權組態。

要創建一個新的 AMI 分發配置:
  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/

  2. 從導航窗格中選擇分發設置。這會顯示在您的帳戶下建立的散發組態清單。

  3. 選擇 「分佈設定」面板頂部附近的「建立分佈設定」。

  4. 在 [映像類型] 區段中,選擇 Amazon 機器映像 (AMI) 輸出類型。

  5. 在 [一] 區段中,輸入散發組態的 [名稱] 和選用說明。

  6. 在「地區設定」區段中,針對您要分發 AMI 的每個區域輸入下列詳細資訊:

    1. AMI 預設會分配到目前的區域 (區域 1)。區域 1 是分配的來源。區域 1 的某些設定無法開啟進行編輯。對於您新增的任何區域,您可以從「地區」下拉式清單中選擇「地」。

      Kms 金鑰可識別 AWS KMS key 用來加密目標區域中映像的 EBS 磁碟區。重要的是要注意,這不適用於構建在源區域(區域 1)的帳戶下創建的原始 AMI。在組建發佈階段執行的加密僅適用於散佈至其他帳戶或區域的映像。

      若要為您的帳戶在來源區域中建立的 AMI 加密 EBS 磁碟區,您必須在映像配方區塊裝置對應 (主控台中的儲存 (磁碟區) 中設定 KMS 金鑰。

      Image Builder 會將 AMI 複製到您為區域指定的目標帳戶

      先決條件

      若要跨帳戶複製映像,您必須在所有發佈目標帳戶中建立EC2ImageBuilderDistributionCrossAccountRole角色,並將Ec2ImageBuilderCrossAccountDistributionAccess 政策受管理的策略附加至該角色。

      輸出 AMI 名稱是可選的。如果您提供名稱,最終輸出 AMI 名稱會包含 AMI 建置時的附加時間戳記。如果您未指定名稱,Image Builder 會將組建時間戳記附加至方案名稱。這確保了每個構建的唯一 AMI 名稱。

      1. 透過 AMI 共用,您可以授與指定 AWS 主體的存取權,以便從 AMI 啟動執行個體。如果您展開 AMI 共享部分,則可以輸入以下詳細信息:

        • 啟動權限 — 如果您想要讓 AMI 保持私密,並允許特定 AWS 主參與者存取以從私人 AMI 啟動執行個體,請選取 [私人]。如果您想要公開 AMI,請選取「公開」。任何 AWS 主體都可以從您的公有 AMI 啟動執行個體。

        • 主參與者 — 您可以授與下列類型之 AWS 主參與者的存取權,以啟動實例:

          • AWS 帳戶 — 授予對特定 AWS 帳戶的訪問權限

          • 組織單位 (OU) — 授與 OU 及其所有子系實體的存取權。子系實體包括 OU 和 AWS 帳戶。

          • 組織 — 授與您 AWS Organizations及其所有子實體的存取權。子系實體包括 OU 和 AWS 帳戶。

            首先,選取「主參與者」類型。然後在下拉式清單右側的方塊中輸入您要授與存取權的 AWS 主參與者 ID。您可以輸入不同類型的多個 ID。

      2. 您可以展開 [授權組態] 區段,將使用建立的授權組態附加 AWS License Manager 至 Image Builder。授權組態包含以企業合約條款為基礎的授權規則。Image Builder 會自動包含與基礎 AMI 相關聯的授權組態。

      3. 您可以展開啟動範本設定區段,以指定用於從您建立的 AMI 啟動執行個體的 EC2 啟動範本。

        如果您使用 EC2 啟動範本,可以指示 Image Builder 建立新版本的啟動範本,其中包含建置完成後的最新 AMI ID。若要更新啟動範本,請依照下列方式進行設定:

        • 啟動範本名稱 — 選取您希望 Image Builder 更新的啟動範本名稱。

        • 設定預設版本 — 選取此核取方塊可將啟動範本預設版本更新為新版本。

        若要新增其他啟動範本組態,請選擇 [新增啟動範本組態]。每個區域最多可以有五個啟動範本設定。

    2. 若要新增其他區域的分佈設定,請選擇 [新增地區]。

  7. 完成後,請選擇 [建立設定]

建立輸出 AMI 的發佈設定 AWS CLI

分發配置允許您指定輸出 AMI 的名稱和描述,授權其他 AWS 帳戶 人啟動 AMI,將 AMI 複製到其他帳戶,並將 AMI 複製到其他 AWS 區域。它還允許您將 AMI 導出到 Amazon Simple Storage Service (Amazon S3),或為輸出窗口 AMI 配置 EC2 快速啟動。若要公開 AMI,請將啟動許可授權帳戶設定為 all。請參閱在 EC2 上公開 AMI 的示例ModifyImageAttribute

下列範例顯示如何使用create-distribution-configuration命令為 AMI 建立新的發佈組態,使用 AWS CLI.

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具建立 JSON 檔案,其中包含下列其中一個範例中顯示的金鑰,以及對您環境有效的值。這些範例定義哪 AWS 帳戶些單位 AWS Organizations 或組織單位 (OU) 有權啟動您散佈至指定區域的 AMI。命名檔案create-ami-distribution-configuration.json,以便在下一個步驟中使用:

    Accounts

    此範例會將 AMI 散發至兩個區域,並指定 AWS 帳戶 在每個區域中具有啟動權限。

    { "name": "MyExampleAccountDistribution", "description": "Copies AMI to eu-west-1, and specifies accounts that can launch instances in each Region.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "An example image name with parameter references", "amiTags": { "KeyName": "Some Value" }, "launchPermission": { "userIds": [ "987654321012" ] } } }, { "region": "eu-west-1", "amiDistributionConfiguration": { "name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}", "amiTags": { "KeyName": "Some value" }, "launchPermission": { "userIds": [ "100000000001" ] } } } ] }
    Organizations and OUs

    此範例會將 AMI 發佈至來源區域,並指定組織和 OU 啟動權限。

    { "name": "MyExampleAWSOrganizationDistribution", "description": "Shares AMI with the Organization and OU", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{ imagebuilder:buildDate }}", "launchPermission": { "organizationArns": [ "arn:aws:organizations::123456789012:organization/o-myorganization123" ], "organizationalUnitArns": [ "arn:aws:organizations::123456789012:ou/o-123example/ou-1234-myorganizationalunit" ] } } } ] }
  2. 使用您建立做為輸入的檔案,執行下列命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://create-ami-distribution-configuration.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

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

    若要取得更多詳細資訊,請參閱《指AWS CLI 令參考create-distribution-configuration中的。

從主控台更新 AMI 發佈設定

您可以使用 Image Builder 主控台變更 AMI 分發設定。更新的發佈設定會用於未來所有自動和手動管線部署。但是,您所做的變更並不會套用至 Image Builder 已經散佈的任何資源。例如,如果您已將 AMI 分配到稍後從發行版中移除的區域,則已分配的 AMI 會保留在該區域中,直到您手動將其移除為止。

更新 AMI 分發配置
  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/

  2. 從導航窗格中選擇分發設置。這會顯示在您的帳戶下建立的散發組態清單。

  3. 若要檢視詳細資料或更新發佈組態,請選擇組態名稱連結。這會開啟分佈設定的詳圖。

    注意

    您也可以選取「組態」名稱旁的核取方塊,然後選擇「檢視詳細資料」。

  4. 若要編輯發佈組態,請從 [發佈詳細資料] 區段右上角選擇 [輯]。某些欄位已鎖定,例如發佈組態的「名稱」,以及顯示為「區域 1」的預設「區域」。如需有關散發組態設定的詳細資訊,請參閱從控制台創建 AMI 分發配置

  5. 完成後,請選擇 Save changes (儲存變更)。

在啟用 EC2 快速啟動的情況下,為 Windows AMI 建立發佈設定 AWS CLI

下列範例顯示如何使用create-distribution-configuration命令建立已為 AMI 設定 EC2 快速啟動的發佈設定,從 AWS CLI.

注意

預先啟用 EC2 快速啟動時,Image Builder 不支援 AMI 的跨帳戶分發。必須從目的地帳戶啟用 EC2 快速啟動。

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具建立包含金鑰的 JSON 檔案,如下列範例所示,加上適用於您環境的值。

    此範例會同時啟動其所有目標資源的執行處理,因為 parallel 啟動次數上限大於目標資源計數。此檔案會ami-dist-config-win-fast-launch.json在下一個步驟中顯示的命令範例中命名。

    { "name": "WinFastLaunchDistribution", "description": "An example of Windows AMI EC2 Fast Launch settings in the distribution configuration.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "Includes Windows AMI EC2 Fast Launch settings.", "amiTags": { "KeyName": "Some Value" } }, "fastLaunchConfigurations": [{ "enabled": true, "snapshotConfiguration": { "targetResourceCount": 5 }, "maxParallelLaunches": 6, "launchTemplate": { "launchTemplateId": "lt-0ab1234c56d789012", "launchTemplateVersion": "1" } }], "launchTemplateConfigurations": [{ "launchTemplateId": "lt-0ab1234c56d789012", "setDefaultVersion": true }] }] }
    注意

    您可以在launchTemplate區段launchTemplateId中指定,launchTemplateName而不是指定名稱和 ID。

  2. 使用您建立做為輸入的檔案,執行下列命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://ami-dist-config-win-fast-launch.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

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

    若要取得更多詳細資訊,請參閱《指AWS CLI 令參考create-distribution-configuration中的。

建立輸出虛擬機器磁碟的發佈設定 AWS CLI

下列範例顯示如何使用create-distribution-configuration命令建立分發設定,以便在每次建置映像檔時將 VM 映像磁碟匯出到 Amazon S3。

  1. 建立 CLI 輸入 JSON 文件

    您可以簡化在中使用的create-distribution-configuration指令 AWS CLI。若要這麼做,請建立 JSON 檔案,其中包含您要傳入指令的所有匯出組態。

    注意

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

    若要提供資料值做為指令行參數,請參考《指AWS CLI 令參考》中指定的參數名稱。以選項形式參考指create-distribution-configuration令。

    以下是我們針對此範例在 s3ExportConfiguration JSON 物件中指定的參數摘要:

    • Roel@@ Name (字串,必要) — 授與虛擬機器匯入/匯出權限以將映像匯出至 S3 儲存貯體的角色名稱。

    • diskImageFormat(字串,必要) — 將更新的磁碟映像檔匯出為下列其中一種支援的格式:

      • 虛擬硬碟 (VHD) — 兼容思杰 Xen 和 Microsoft Hyper-V 虛擬化產品。

      • 串流最佳化 ESX 虛擬機器磁碟 (VMDK) — 相容於 VMware ESX 和 VMware vSphere 第 4、5 和 6 版。

      • 原始 — 原始格式。

    • S3bucket (字串,必要) — 用來存放虛擬機器輸出磁碟映像檔的 S3 儲存貯體。

    儲存檔案為 export-vm-disks.json。在create-distribution-configuration指令中使用檔案名稱。

    { "name": "example-distribution-configuration-with-vm-export", "description": "example", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "description": "example-with-vm-export" }, "s3ExportConfiguration": { "roleName": "vmimport", "diskImageFormat": "RAW", "s3Bucket": "vm-bucket-export" } }], "clientToken": "abc123def4567ab" }
  2. 使用您建立做為輸入的檔案,執行下列命令。
    aws imagebuilder create-distribution-configuration --cli-input-json file://export-vm-disks.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

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

    若要取得更多詳細資訊,請參閱《指AWS CLI 令參考create-distribution-configuration中的。

從以下位置更新 AMI 發佈設定 AWS CLI

下列範例顯示如何使用update-distribution-configuration命令來更新 AMI 的發佈設定,使用 AWS CLI.

  1. 建立 CLI 輸入 JSON 文件

    使用您最愛的檔案編輯工具,建立 JSON 檔案,其中包含下列範例中顯示的金鑰,加上適用於您環境的值。此範例使用名為的檔案update-ami-distribution-configuration.json

    { "distributionConfigurationArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/update-ami-distribution-configuration.json", "description": "Copies AMI to eu-west-2, and specifies accounts that can launch instances in each Region.", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": { "name": "Name {{imagebuilder:buildDate}}", "description": "An example image name with parameter references", "launchPermissions": { "userIds": [ "987654321012" ] } } }, { "region": "eu-west-2", "amiDistributionConfiguration": { "name": "My {{imagebuilder:buildVersion}} image {{imagebuilder:buildDate}}", "tags": { "KeyName": "Some value" }, "launchPermissions": { "userIds": [ "100000000001" ] } } } ] }
  2. 使用您建立做為輸入的檔案,執行下列命令。
    aws imagebuilder update-distribution-configuration --cli-input-json file://update-ami-distribution-configuration.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

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

    若要取得更多詳細資訊,請參閱《指AWS CLI 令參考update-distribution-configuration中的。若要更新發佈組態資源的標籤,請參閱標籤資源章節。