建立和更新 AMI 分佈組態 - EC2 Image Builder

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

建立和更新 AMI 分佈組態

本節涵蓋建立和更新映像建置器 AMI 的分佈組態。

從主控台建立 AMI 分佈組態

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

若要建立新的 AMI 分佈組態:
  1. 開啟 EC2 Image Builder 主控台,位於 https://console.aws.amazon.com/imagebuilder/

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

  3. 選擇分佈設定面板頂端附近的建立分佈設定

  4. 映像類型區段中,選擇 Amazon Machine Image (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 及其所有子實體的存取權。子實體包括 OUs和 AWS 帳戶。

          • 組織 – 授予您 AWS Organizations及其所有子實體的存取權。子實體包括 OUs和 AWS 帳戶。

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

      2. 您可以展開授權組態區段,將以 建立的授權組態連接至 AWS License Manager 您的映像建置器映像。授權組態包含以企業協議條款為基礎的授權規則。Image Builder 會自動包含與您的基礎 AMI 相關聯的授權組態。

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

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

        • 啟動範本名稱 – 選取您要 Image Builder 更新的啟動範本名稱。

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

        若要新增另一個啟動範本組態,請選擇新增啟動範本組態。每個區域最多可以有五個啟動範本組態。

    2. 若要新增另一個區域的分佈設定,請選擇新增區域

  7. 完成時,請選擇建立設定

從 建立輸出 AMIs分佈設定 AWS CLI

分佈組態可讓您指定輸出 AMI 的名稱和描述、授權其他人 AWS 帳戶 啟動 AMI、將 AMI 複製到其他帳戶,以及將 AMI 複製到其他 AWS 區域。它還允許您將 AMI 匯出到 Amazon Simple Storage Service (Amazon S3),或設定 EC2 Fast Launch 用於輸出 Windows AMIs。若要公開 AMI,請將啟動許可授權帳戶設定為 all。請參閱 EC2 上公開 AMI 的範例ModifyImageAttribute

下列範例說明如何使用 create-distribution-configuration命令,為您的 AMI 建立新的分佈組態 AWS CLI。

  1. 建立 CLI 輸入 JSON 文件

    使用檔案編輯工具建立 JSON 檔案,其中包含下列其中一個範例所示的金鑰,以及適用於您環境的值。這些範例會定義哪些 AWS 帳戶 AWS Organizations 或組織單位 OUs) 具有啟動您分發到指定區域的 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 和 macOS 則使用正斜線 (/)。

    如需更多詳細資訊,請參閱 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 (儲存變更)。

建立分佈設定以啟用輸出 AMIs的 EC2 Fast Launch

下列範例示範如何使用 create-distribution-configuration命令,從 建立已為您的 AMI 設定 EC2 Fast Launch 的分佈設定 AWS CLI。

注意

Image Builder 不支援預先啟用 EC2 Fast Launch 的 AMIs 跨帳戶分佈。必須從目的地帳戶啟用 EC2 Fast Launch。

  1. 建立 CLI 輸入 JSON 文件

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

    此範例會同時為其所有目標資源啟動執行個體,因為平行啟動的最大數量大於目標資源計數。此檔案在下一個步驟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 和 macOS 則使用正斜線 (/)。

    如需更多詳細資訊,請參閱 AWS CLI 命令參考create-distribution-configuration中的 。

從 建立輸出 VM 磁碟的分佈設定 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 物件中為此範例指定的參數摘要:

    • roleName (字串,必要) – 授予 VM Import/Export 許可將映像匯出至 S3 儲存貯體的角色名稱。

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

      • Virtual Hard Disk (VHD) – 與 Citrix Xen 和 Microsoft Hyper-V 虛擬化產品相容。

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

      • 原始 – 原始格式。

    • s3Bucket體 (字串,必要) – 存放 VM 輸出磁碟映像的 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 和 macOS 則使用正斜線 (/)。

    如需更多詳細資訊,請參閱《 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 和 macOS 則使用正斜線 (/)。

    如需更多詳細資訊,請參閱《 AWS CLI 命令參考update-distribution-configuration》中的 。若要更新分佈組態資源的標籤,請參閱標籤資源一節。