View a markdown version of this page

使用 EC2 Image Builder 元件產品 - AWS Marketplace

AWS Marketplace API 參考已重組。如需支援的 API 操作的詳細資訊,請參閱 AWS Marketplace API 參考

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

使用 EC2 Image Builder 元件產品

身為 AWS Marketplace 賣方,您可以使用 EC2 Image Builder 元件列出交付給 AWS Marketplace 買方的 AMI 型產品。若要建立元件並發佈 AWS Marketplace 清單,請依序完成下列各節。

建置和測試您的映像建置器元件

在映像建置器上建置和測試您的元件。如需說明,請參閱《映像建置器使用者指南》中的開發映像建置器映像的自訂元件使用映像建置器建立元件時,請確定您執行下列動作:

  • 元件及其所有基礎相依性,例如 Amazon Simple Storage Service (Amazon S3) 儲存貯體、秘密或參數,都必須在美國東部 (維吉尼亞北部) (us-east-1) AWS 區域中建立。

  • 在元件描述中包含支援的架構和任何軟體相依性。

  • 透過建立映像管道並部署管道建立的 AMI,測試您 AWS 帳戶中的元件。

  • 如果您的元件包含從 S3 儲存貯體複製二進位檔、套件或檔案的指示,請使用 S3Download動作模組。在 S3Download模組中,針對 source,在 S3 儲存貯體中輸入檔案的靜態位置。下列範例會從 S3 儲存貯體複製二進位檔,做為元件安裝的一部分。

    - name: DownloadMyFile action: S3Download inputs: - source: s3://amzn-s3-demo-source-bucket/path/to/package.zip destination: C:\myfolder\package.zip
  • 元件在使用 S3Download動作時,最多可擷取 2 GB 的檔案。

  • 如果您的元件使用參數,請確保所有參數都有預設值。例如,如果您有名為 的參數region,請確定您有有效的預設值,例如 us-east-1。這些預設值用於 AWS Marketplace 處理和測試。如果您未包含預設值,測試可能會失敗。

  • 如果您的元件使用 AWS Secrets Manager參數存放區或 AWS Systems Manager 儲存參數的功能,請執行下列動作:

    • 若要擷取值做為元件中的步驟,請在 YAML 組態檔案中內嵌 AWS Command Line Interface 命令。

    • 在 Secrets Manager 或 AWS 帳戶中的參數存放區中建立對應的項目。使用預設金鑰並提供有效值,以協助在 AWS Marketplace 測試過程中建置元件。例如,假設您有一個名為 的參數saas_token,預設值為 token 且使用參數存放區。在此情況下,請在參數存放區中建立索引鍵/值對。使用 token做為金鑰。在 值中,輸入應用程式的有效 SaaS 字符。

      請注意,存放在 AWS Marketplace 賣方帳戶中的值只會用於 AWS Marketplace 測試目的。這些值不會與買方共用。

    • AWS Marketplace 在您於元件建立程序期間選擇的所有相容作業系統版本中, 會自動為您的元件產生 Amazon Machine Image (AMIs)。建置元件時,請選擇至少一個相容的作業系統版本。使用 EC2 Image Builder 管道來建立和測試 AMIs,以驗證元件與所有所選作業系統版本的相容性。

複製元件 ARN

在映像建置器上建立和測試元件後,複製並儲存元件 ARN。當您使用 AWS Marketplace 目錄 API 發佈產品清單時,將使用 ARN。

複製映像建置器元件 ARN
  1. 登入 AWS 管理主控台,並在 開啟映像建置器主控台https://console.aws.amazon.com/imagebuilder/

  2. 在左側導覽列的已儲存資源下,選擇元件

  3. 元件頁面上,針對篩選條件擁有者,選擇由我擁有

  4. 選擇元件名稱。

  5. 在元件詳細資訊頁面的摘要區段中,複製 ARN。

建立 AWS Marketplace IAM 政策

建立下列 IAM 政策,以授予對 Image Builder 元件和相關資源的 AWS Marketplace 存取權,例如 Amazon S3 儲存貯體和秘密。使用提供的範例政策。您可以將這些政策連接至 AWS Marketplace IAM 角色。如需建立政策的說明,請參閱《IAM 使用者指南》中的使用 JSON 編輯器建立政策

  • Image Builder get-component 政策, AWS Marketplace 允許 在 Image Builder 上存取您的元件。此政策為必要項目。將政策命名為 mp_ib_ingest

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "imagebuilder:GetComponent", "Resource": "*" } ] }
  • Amazon S3 讀取存取政策, AWS Marketplace 以允許 從 S3 儲存貯體擷取二進位檔。只有在您的元件使用 S3Download動作模組並將相關聯的二進位檔存放在 S3 儲存貯體時,才需要此政策。將政策命名為 mp_ib_s3_read_only

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket_name" ] }, { "Sid": "ReadObjectsInBucket", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectAttributes" ], "Resource": [ "arn:aws:s3:::bucket_name/*" ] } ] }
  • Secrets Manager 讀取存取政策, AWS Marketplace 允許 擷取存放在 Secrets Manager 中的秘密。只有在您的元件使用 Secrets Manager 存放秘密時,才需要此政策。將政策命名為 mp_ib_sm_read_only。若要將政策限制為您的秘密,請將 Resource區段*中的 取代為您的秘密。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "*" ] } ] }
  • 參數存放區讀取存取政策, AWS Marketplace 允許 擷取儲存在參數存放區的秘密。只有在您的元件使用參數存放區來存放秘密時,才需要此政策。將政策命名為 mp_ib_ssm_parameter_read_only。若要將政策限制為您的秘密,請將 Resource區段*中的 取代為您的秘密。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "ssm:getParameter" ], "Resource": [ "*" ] } ] }

建立 AWS Marketplace IAM 角色

使用下列程序建立具有政策的 AWS Marketplace IAM 角色,以授予對元件及其相依性的 AWS Marketplace 存取權。

建立 AWS Marketplace IAM 角色
  1. 登入 AWS 管理主控台,並在 https://console.aws.amazon.com/iam/:// 開啟 IAM 主控台。

  2. 在左側導覽列中,選擇角色

  3. 選擇建立角色

  4. 選取自訂信任政策

  5. 輸入下列陳述式:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "Service": "assets.marketplace.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  6. 選擇下一步

  7. 新增您先前建立的映像建置器 get-component 政策。需要 get-component 政策。如果您的元件使用 AWS 這些服務,請新增 S3、Secrets Manager 和 Parameter Store 的相關政策。

  8. 選擇下一步

  9. 輸入角色名稱,例如 MPEC2IBIngestion

  10. 選擇建立角色

複製 AWS Marketplace IAM 角色 ARN

建立 IAM AWS Marketplace 角色後,複製並儲存角色 ARN。使用 AWS Marketplace 目錄 API 發佈清單時,您將使用 ARN。

複製 AWS Marketplace IAM 角色 ARN
  1. 在 IAM 主控台的左側導覽列中,選擇角色

  2. 選擇您先前建立的 AWS Marketplace IAM 角色,例如 MPEC2IBIngestion

  3. 在角色詳細資訊頁面上的摘要區段中,複製 ARN。

準備您的映像建置器元件清單

在發佈 AWS Marketplace 清單之前,請確定您已備妥下列資訊:

  • 產品中繼資料 – 中繼資料包括產品標誌、產品標題、最終使用者授權合約、支援的執行個體類型和 AWS 區域。

  • 定價資訊 – 您可以免費、按小時費率或按小時費率提供您的產品,其中包含初始免費試用期。不支援使用您自己的授權 (BYOL)。

  • 元件詳細資訊 – 詳細資訊包括元件 Amazon Resource Number (ARN)、用量詳細資訊和 AWS Identity and Access Management (IAM) 角色,這些角色 AWS Marketplace 將擔任這些角色來處理您的元件。

發佈您的 Image Builder 元件產品清單

本主題包含 AWS Marketplace 使用 AWS Marketplace 目錄 API 在 上發佈 EC2 Image Builder 元件清單的說明。

先決條件

在發佈 Image Builder 元件產品清單之前,請確定您有下列項目:

  • 註冊為 中的賣方 AWS Marketplace。如需詳細資訊,請參閱註冊為 AWS Marketplace 賣方

  • 具有 AWSMarketplaceSellerFullAccess許可的 IAM 使用者。

  • 如果您的元件使用 ,可公開存取的 Amazon Simple Storage Service (Amazon S3) 儲存貯體可託管您的公司標誌和 EULA。您將在 ChangeSet JSON 檔案中輸入 S3 儲存貯體的 URL。

  • AWS Command Line Interface (AWS CLI)。 如需詳細資訊,請參閱什麼是 AWS 命令列界面? AWS Command Line Interface 《 使用者指南》中的 。

在 上建立映像建置器元件產品 AWS Marketplace

若要 AWS Marketplace 使用目錄 API 在 上建立 EC2 Image Builder 元件產品,請參閱 建立產品

更新映像建置器元件產品資訊

您可以在 AWS Marketplace 管理入口網站更新映像建置器元件產品的相關資訊。

更新 Image Builder 元件產品資訊
  1. 開啟 AWS Marketplace 管理入口網站並登入您的賣方帳戶。

  2. 產品功能表中,選擇伺服器

  3. 伺服器產品頁面上,選取產品。

  4. 在產品詳細資訊頁面上的請求變更功能表上,選擇對應至您要更新之資訊的項目。

  5. 提交任何變更後,請求將顯示在「審核中」狀態的請求索引標籤上,並在完成後變更為「成功」。

將新版本新增至現有的 Image Builder 元件產品

您可以使用 AWS Marketplace 將新版本新增至 上的映像建置器元件產品 AWS Marketplace Catalog API。

新增新版本
  1. 從 AWS Marketplace 管理入口網站取得產品 ID。

    1. 開啟 AWS Marketplace 管理入口網站並登入您的賣方帳戶。

    2. 產品功能表中,選擇伺服器

    3. 伺服器產品頁面上,選取產品。

    4. 產品摘要中,複製產品 ID

  2. 使用下列程式碼範例,以 JSON 格式建立 changeset 檔案。在此範例中,將 your-product-ID 取代為您在步驟 1 中取得的產品 ID。將 new-version-name 取代為您的版本標題。將 new-delivery-option-title 取代為您的交付選項標題。

    [ { "ChangeType": "AddDeliveryOptions", "Entity": { "Identifier": "your-product-ID", "Type": "AmiProduct@1.0" }, "DetailsDocument": { "Version": { "VersionTitle": "new-version-name", "ReleaseNotes": "Release notes goes here." }, "DeliveryOptions": [ { "DeliveryOptionTitle": "new title", "Details": { "Ec2ImageBuilderComponentDeliveryOptionDetails": { "UsageInstructions": "Test usage instructions for IB", "AccessRoleArn": "arn:aws:iam::123456789:role/sample", "ComponentArn": "arn:aws:imagebuilder:us-east-1:123456789:component/sample/2.0.0/1" } } } ] } } ]
  3. 儲存名稱為 的變更集檔案addIBversion.json

  4. 在終端機或 中 AWS CloudShell,執行下列命令:

    aws marketplace-catalog start-change-set --catalog AWSMarketplace --region us-east-1 --change-set file://addIBversion.json

start-change-set 命令會傳回ChangeSetId值。若要監控變更集,請參閱 監控變更集

非同步錯誤

下列錯誤專屬於 中的AddDeliveryOptions動作 AWS Marketplace Catalog API。當您在處理變更集DescribeChangeSet之後呼叫 時,會傳回這些錯誤。如需使用 DescribeChangeSet 取得變更請求狀態的詳細資訊,請參閱 使用變更集

注意

下列錯誤代碼專屬於 Image Builder 交付方法。如需 Usage InstructionsRecommended Instance type和 等欄位的現有錯誤訊息AccessRoleArn,請參閱 新增新版本

錯誤碼 錯誤訊息

ASSET_NOT_FOUND

檢查 【account-id】 AWS 帳戶中是否存在 【component arn】,且 AccessARN 提供的 【ARN】 具有與 共用此映像建置器元件的許可 AWS Marketplace。

ASSET_NOT_FOUND

元件 【x】 中指定的 S3 連結 【x】 不存在。在元件內提供有效的 S3 連結。

DUPLICATE_COMPONENT_NAME

元件名稱 【x】 已存在於相同版本中。提供不同的元件名稱。

DUPLICATE_COMPONENT_NAME

您提供的元件名稱 【x】 已由不同的產品使用。提供不同的元件名稱。

DUPLICATE_COMPONENT_ARN

元件 Arn 【x】 必須與該產品相同版本的其他交付選項中使用的元件 Arn 不同。

DUPLICATE_COMPONENT_ARN

元件 ARN 【x】 必須與此產品其他版本中使用的元件 ARN 不同。

SCAN_ERROR

修正元件 【x】 上的安全漏洞 【y】。

ASSET_ACCESS_EXCEPTION

我們沒有從指定的 S3 儲存貯體 【x】 讀取內容的必要許可。確保 S3 儲存貯體具有適當的讀取許可。

ASSET_ACCESS_EXCEPTION

我們沒有讀取指定元件 ARN【x】 內容的必要許可。確保元件 ARN 具有適當的讀取許可。

ASSET_ACCESS_EXCEPTION

我們沒有讀取指定套件 URI 【x】 內容的必要許可。確保套件 URI 具有適當的讀取許可。

ASSET_ACCESS_EXCEPTION

無法從 HTTP 來源 【x】 讀取。驗證提供的 HTTP 來源是否正確。

INVALID_IMAGE_BUILDER_COMPONENT_PACKAGE

元件資產超過擷取的大小限制。減少 S3/web 下載的大小,或消除不必要的下載以繼續。

INVALID_IMAGE_BUILDER_COMPONENT_PACKAGE

元件資產需要太長的時間才能擷取。確保您的網路連線穩定且具有足夠的頻寬。

TOO_MANY_IMAGE_BUILDER_COMPONENTS

每個產品最多支援 5 個唯一元件名稱,限制額外的交付選項。

INCOMPLETE_SELLER_PUBLIC_PROFILE

您的賣方公開設定檔尚未完成。在將版本新增至產品之前,請先完成您的公有設定檔。

INVALID_DESCRIPTION

缺少描述。提供元件 【x】 中少於 1024 個字元的描述。

INVALID_COMPONENT_NAME

提供少於 【x】 個字元的元件名稱。

INVALID_SUPPORTED_OS_VERSION

作業系統版本遺失。在元件 【x】 中提供有效的支援作業系統版本。

INVALID_PATH_FORMAT

階段 【PHASE_NAME】 中的步驟 【STEP_NAME】 不允許對 InstallMSI/UninstallMSI 動作使用 S3 或 Web URLs。確定指定的路徑是從執行 動作的系統存取的有效本機路徑。

INCOMPATIBLE_OS_TYPE

指定的元件作業系統類型 【x】 與基礎映像的平台不相容。提供與基礎映像相容的作業系統類型。

ASSET_ACCESS_EXCEPTION

我們沒有從指定的 SSM 參數 【x】 讀取內容的必要許可。確定 API 輸入中提供的 IAM 存取角色具有必要的讀取許可。

ASSET_ACCESS_EXCEPTION

我們沒有從指定的 SecretsManager 秘密 【x】 讀取內容的必要許可。確保 API 輸入中提供的 IAM 存取角色具有必要的讀取許可。

INVALID_IB_COMPONENT_BUILD_VERSION

元件 ARN 【x】 的建置版本為 【y】。 AWS Marketplace 僅支援建置版本 1。使用組建版本 1 建立新的 EC2 Image Builder 版本,然後在 上再試一次 AWS Marketplace

INVALID_IB_COMPONENT_PARAMETER

無法剖析元件 【y】 輸入 【x】 中的 SSM 參數。

INVALID_IB_COMPONENT_PARAMETER

無法剖析元件 【y】 輸入 【x】 中的 SecretsManager 秘密。

MISSING_IB_COMPONENT_PARAMETER

在用於輸入 【y】 的元件 【x】 中找不到參數

INVALID_IB_COMPONENT_PARAMETER

在元件 【y】 中提供參數 【x】 的預設值。

FAILED_LAUNCH_TEST

元件 【x】 的啟動測試失敗。錯誤訊息:【z】

SSHAuthFailedForUserAndKeypair

無法使用作業系統預設使用者名稱 【X】 登入執行個體。

INVALID_IB_COMPONENT

需要元件建置階段。將有效的建置階段新增至元件 【x】

DUPLICATE_VERSION_TITLE

版本標題必須與此產品的任何其他版本標題不同。

INVALID_VERSION_TITLE

移除商標符號前面的空格。

INVALID_VERSION_TITLE

移除不支援的字元:【x、y、z】

INVALID_VERSION_TITLE

從版本標題開頭移除空格。

INVALID_VERSION_TITLE

提供少於 【x】 個字元的版本標題。

INVALID_RELEASE_NOTES

移除商標符號前面的空格。

INVALID_RELEASE_NOTES

移除不支援的字元:【x、y、z】

INVALID_RELEASE_NOTES

從版本備註開頭移除空格。

INVALID_RELEASE_NOTES

提供少於 (x) 個字元的版本備註。

INVALID_USAGE_INSTRUCTIONS

移除商標符號前面的空格。

INVALID_USAGE_INSTRUCTIONS

移除不支援的字元:【x、y、z】

INVALID_USAGE_INSTRUCTIONS

提供少於 (x) 個字元的使用說明。

DUPLICATE_DELIVERY_OPTION_TITLES

提供唯一的交付選項標題。

INVALID_DELIVERY_OPTION_TITLES

交付選項標題已存在,請使用不同的標題重試。

更新現有版本的相關資訊

更新現有版本的相關資訊
  1. 從 AWS Marketplace 管理入口網站取得產品 ID。

    1. 開啟 AWS Marketplace 管理入口網站 並登入您的賣方帳戶。

    2. 產品功能表中,選擇伺服器

    3. 伺服器產品頁面上,選取產品。

    4. 產品摘要中,複製產品 ID

  2. 在終端機中,執行下列命令。在 命令中,將 your-product-ID 取代為您在步驟 1 中取得的 ID。

    aws marketplace-catalog describe-entity --catalog AWSMarketplace --region us-east-1 --entity-id 'your-product-ID'
  3. 在傳回的輸出中,前往 DetailsDocumentVersions區段。複製您要更新之版本的 DeliveryOptionsId值。

  4. 使用下列程式碼範例,建立 JSON 格式的變更集檔案。在此範例中,將 your-product-ID 取代為您在步驟 1 中取得的產品 ID。以your-release-notes取代您的版本備註。以您在步驟 3 中取得的交付選項 ID 取代 your-delivery-option-ID。將 your-usage-instructions 取代為您的使用說明。

    [ { "ChangeType": "UpdateDeliveryOptions", "Entity": { "Identifier": "your-product-ID", "Type": "AmiProduct@1.0" }, "DetailsDocument": { "Version": { "ReleaseNotes": "your-release-notes" }, "DeliveryOptions": [ { "Id": "your-delivery-option-ID", "Details": { "Ec2ImageBuilderComponentDeliveryOptionDetails": { "UsageInstructions": "your-usage-instructions" } } } ] } } ]
  5. 儲存名稱為 的變更集檔案updateVersionInfo.json

  6. 在終端機或 中 AWS CloudShell,執行下列命令:

    aws marketplace-catalog start-change-set --catalog AWSMarketplace --region us-east-1 --change-set file://updateVersionInfo.json

start-change-set 命令會傳回ChangeSetId值。若要監控變更集,請參閱 監控變更集

限制 Image Builder 元件產品版本

限制版本可讓買方無法使用。您可以使用 AWS Marketplace AWS Marketplace 目錄 API 在 上限制映像建置器元件產品的版本。您必須至少保留一個版本的 產品,不受限制 AWS Marketplace。您無法限制對唯一公有版本的存取。

更新現有版本的相關資訊
  1. 從 AWS Marketplace 管理入口網站取得產品 ID。

    1. 開啟 AWS Marketplace 管理入口網站並登入您的賣方帳戶。

    2. 產品功能表中,選擇伺服器

    3. 伺服器產品頁面上,選取產品。

    4. 產品摘要中,複製產品 ID

  2. 在終端機中,執行下列命令。在 命令中,將 your-product-ID 取代為您在步驟 1 中取得的 ID。

    aws marketplace-catalog describe-entity --catalog AWSMarketplace --region us-east-1 --entity-id 'your-product-ID'
  3. 在傳回的輸出中,前往 DetailsDocumentVersions區段。複製您要更新之版本的 DeliveryOptionsId值。

  4. 使用下列程式碼範例,建立 JSON 格式的變更集檔案。在此範例中,將 your-product-ID 取代為您在步驟 1 中取得的產品 ID。以您在步驟 3 中取得的交付選項 ID 取代 your-delivery-option-ID

    [ { "ChangeType": "RestrictDeliveryOptions", "Entity": { "Identifier": "your-product-ID", "Type": "AmiProduct@1.0" }, "DetailsDocument": { "DeliveryOptionIds": [ "your-delivery-option-ID" ] } } ]
  5. 儲存名稱為 的變更集檔案restrictec2ibversion.json

  6. 在終端機或 中 AWS CloudShell,執行下列命令:

    aws marketplace-catalog start-change-set --catalog AWSMarketplace --region us-east-1 --change-set file://restrictec2ibversion.json

start-change-set 命令會傳回ChangeSetId值。若要監控變更集,請參閱 監控變更集

監控變更集

start-change-set 命令會傳回ChangeSetId值。您可以透過下列方式監控變更集進度:

  • 在終端機中執行下列命令。在 命令中,將 changeset-ID 取代為 start-change-set命令傳回ChangeSetId的值。

    aws marketplace-catalog describe-change-set ‐‐catalog AWSMarketplace ‐‐change-set-id changesetID
  • AWS Marketplace 管理入口網站的請求索引標籤上檢視請求狀態。

保護軟體下載

為了保護 ISV 軟體智慧財產權,並確保穩定、一致的軟體交付給 AWS Marketplace 買方, AWS Marketplace 會自動剖析元件中的 S3DownloadWebDownload 動作模組。然後,參考的檔案會安全地存放在由 管理的私有 Amazon S3 儲存貯體中 AWS Marketplace。若要選擇退出此擷取程序並獨立管理軟體下載,請執行使用 wgetcurl 下載命令的 bash 指令碼。