使用映像建置器設定跨帳戶 AMI 分佈 - EC2 Image Builder

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

使用映像建置器設定跨帳戶 AMI 分佈

本節說明如何設定分佈設定,將 Image Builder AMI 交付至您指定的其他帳戶。

然後,目的地帳戶可以視需要啟動或修改 AMI。

注意

AWS CLI 本節中的命令範例假設您先前已建立映像配方和基礎設施組態 JSON 檔案。若要為映像配方建立 JSON 檔案,請參閱使用 建立映像配方 AWS CLI。若要建立基礎設施組態的 JSON 檔案,請參閱建立基礎架構組態

跨帳戶 AMI 分佈的先決條件

若要確保目標帳戶可以從映像建置器映像成功啟動執行個體,您必須為所有區域中的所有目的地帳戶設定適當的許可。

如果您使用 AWS Key Management Service (AWS KMS) 加密 AMI,您必須 AWS KMS key 為用來加密新映像的帳戶設定 。

當 Image Builder 為加密AMIs 執行跨帳戶分佈時,來源帳戶中的影像會解密並推送到目標區域,並在該區域使用指定的金鑰重新加密。由於 Image Builder 代表目標帳戶,並使用您在目的地區域中建立的 IAM 角色,因此該帳戶必須同時具有來源和目的地區域中的金鑰存取權。

加密金鑰

如果您的映像是使用 加密,則需要下列先決條件 AWS KMS。下一章節將介紹 IAM 先決條件。

來源帳戶需求
  • 在您建置和分發 AMI 的所有區域中,在帳戶中建立 KMS 金鑰。您也可以使用現有的金鑰。

  • 更新所有這些金鑰的金鑰政策,以允許目的地帳戶使用您的金鑰。

目的地帳戶需求
  • 將內嵌政策新增至 EC2ImageBuilderDistributionCrossAccountRole ,允許角色執行必要動作以分發加密的 AMI。如需 IAM 組態步驟,請參閱IAM 政策先決條件一節。

如需使用 跨帳戶存取的詳細資訊 AWS KMS,請參閱《 AWS Key Management Service 開發人員指南中的允許其他帳戶中的使用者使用 KMS 金鑰

在映像配方中指定您的加密金鑰,如下所示:

  • 如果您使用的是 Image Builder 主控台,請從配方的儲存 (磁碟區) 區段中的加密 (KMS 別名) 下拉式清單中選擇加密金鑰。

  • 如果您使用 CreateImageRecipe API 動作,或 中的 create-image-recipe命令 AWS CLI,請在 JSON 輸入中的 ebs區段blockDeviceMappings中設定您的金鑰。

    下列 JSON 程式碼片段顯示影像配方的加密設定。除了提供加密金鑰之外,您還必須將 encrypted旗標設定為 true

    { ... "blockDeviceMappings": [ { "deviceName": "Example root volume", "ebs": { "deleteOnTermination": true, "encrypted": true, "iops": 100, "kmsKeyId": "image-owner-key-id", ... }, ... }], ... }

IAM 政策

若要在 AWS Identity and Access Management (IAM) 中設定跨帳戶分佈許可,請遵循下列步驟:

  1. 若要使用分散在帳戶之間的映像建置器 AMIs,目的地帳戶擁有者必須在其帳戶中建立新的 IAM 角色,稱為 EC2ImageBuilderDistributionCrossAccountRole

  2. 他們必須將 Ec2ImageBuilderCrossAccountDistributionAccess 政策 連接至 角色,才能啟用跨帳戶分佈。如需受管政策的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的受管政策和內嵌政策

  3. 確認來源帳戶 ID 已新增至連接到目的地帳戶的 IAM 角色的信任政策。下列範例顯示目的地帳戶中的信任政策,指定來源帳戶中的帳戶 ID。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": "sts:AssumeRole" }] }

    如需信任政策的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的資源型政策

  4. 如果您分發的 AMI 已加密,目的地帳戶擁有者必須將下列內嵌政策新增至其帳戶中EC2ImageBuilderDistributionCrossAccountRole的 ,以便他們可以使用您的 KMS 金鑰。Principal 區段包含其帳戶號碼。這可讓 Image Builder 使用每個區域的合適金鑰 AWS KMS 來加密和解密 AMI 時,代表他們採取行動。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRoleToPerformKMSOperationsOnBehalfOfTheDestinationAccount", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*" } ] }

    如需內嵌政策的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的內嵌政策

  5. 如果您使用 launchTemplateConfigurations 來指定 Amazon EC2 啟動範本,您還必須在EC2ImageBuilderDistributionCrossAccountRole每個目的地帳戶中將下列政策新增至您的 。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateLaunchTemplateVersion", "ec2:ModifyLaunchTemplate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/CreatedBy": "EC2 Image Builder" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeLaunchTemplates" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:launch-template/*", "Condition": { "StringEquals": { "aws:RequestTag/CreatedBy": "EC2 Image Builder" } } } ] }

跨帳戶分佈的限制

跨帳戶分發映像建置器映像時有一些限制:

  • 目的地帳戶在每個目的地區域限制為 50 個並行 AMI 複本。

  • 如果您想要將半虛擬 (PV) 虛擬化 AMI 複製到另一個區域,則目的地區域必須支援 PV 虛擬化 AMIs。如需詳細資訊,請參閱 Linux AMI 虛擬化類型

  • 您無法建立加密快照的未加密複本。如果您未為 KmsKeyId 參數指定 AWS Key Management Service (AWS KMS) 客戶受管金鑰,Image Builder 會使用 Amazon Elastic Block Store (Amazon EBS) 的預設金鑰。如需詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的 Amazon EBS 加密

如需詳細資訊,請參閱 EC2 Image Builder API 參考中的 CreateDistributionConfiguration

從主控台設定 Image Builder AMI 的跨帳戶分佈

本節說明如何使用 建立和設定 Image Builder AMIs 跨帳戶分佈的分佈設定 AWS Management Console。設定跨帳戶分佈需要特定的 IAM 許可。您必須完成本節跨帳戶 AMI 分佈的先決條件的 ,才能繼續。

若要在 Image Builder 主控台中建立分佈設定,請遵循下列步驟:

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

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

  3. 分佈設定頁面頂端,選擇建立分佈設定。這會帶您前往建立分佈設定頁面。

  4. 映像類型區段中,選擇 Amazon Machine Image (AMI) 作為輸出類型。這是預設設定。

  5. 一般區段中,輸入您要建立的分佈設定資源名稱 (必要)。

  6. 區域設定區段中,輸入您要在所選區域的目標帳戶中將 AMI 分發到的 12 位數帳戶 ID,然後按 Enter。這會檢查格式是否正確,然後顯示您在方塊下方輸入的帳戶 ID。重複此程序以新增更多帳戶。

    若要移除您輸入的帳戶,請選擇帳戶 ID 右側的 X

    輸入每個區域的輸出 AMI 名稱

  7. 繼續指定您需要的任何其他設定,然後選擇建立設定以建立新的分佈設定資源。

從 設定映像建置器 AMI 的跨帳戶分佈 AWS CLI

本節說明如何設定分佈設定檔案,並在 中使用 create-image 命令 AWS CLI 來建置和分佈 Image Builder AMI 到各個帳戶。

設定跨帳戶分佈需要特定的 IAM 許可。您必須先完成本節跨帳戶 AMI 分佈的先決條件的 ,才能執行 create-image命令。

  1. 設定分佈設定檔案

    在 中使用 create-image命令 AWS CLI 來建立分佈至另一個帳戶的映像建置器 AMI 之前,您必須先建立 DistributionConfiguration JSON 結構,在AmiDistributionConfiguration設定中指定目標帳戶 IDs。您必須在AmiDistributionConfiguration來源區域中指定至少一個。

    下列名為 的範例檔案create-distribution-configuration.json會顯示來源區域中跨帳戶映像分佈的組態。

    { "name": "cross-account-distribution-example", "description": "Cross Account Distribution Configuration Example", "distributions": [ { "amiDistributionConfiguration": { "targetAccountIds": ["123456789012", "987654321098"], "name": "Name {{ imagebuilder:buildDate }}", "description": "ImageCopy Ami Copy Configuration" }, "region": "us-west-2" } ] }
  2. 建立分佈設定

    若要使用 中的 create-distribution-configuration 命令建立 Image Builder 分佈設定資源 AWS CLI,請在 命令中提供下列參數:

    • --name 參數中輸入分佈的名稱。

    • 連接您在 --cli-input-json 參數中建立的分佈組態 JSON 檔案。

    aws imagebuilder create-distribution-configuration --name my distribution name --cli-input-json file://create-distribution-configuration.json
    注意
    • 您必須在 JSON 檔案路徑的開頭包括 file:// 標記。

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

您也可以使用 --distributions 參數,直接在 命令中提供 JSON。