AWS Marketplace API 参考已重组。有关支持的 API 操作的更多信息,请参阅 AWS Marketplace API 参考。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 EC2 Image Builder 组件产品
作为 AWS Marketplace 卖家,您可以使用 EC2 Image Builder 组件发布交付给 AWS Marketplace 买家的 AMI-based 产品。要创建组件并发布 AWS Marketplace 清单,请按顺序完成以下部分。
主题
构建和测试您的 Image Builder 组件
在 Image Builder 上构建和测试您的组件。有关说明,请参阅 Image Builder 用户指南中的 Image Builder 镜像开发自定义组件。使用 Image Builder 创建组件时,请确保执行以下操作:
-
该组件及其所有底层依赖项,例如亚马逊简单存储服务 (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 处理和测试。如果不包含默认值,则测试可能会失败。 -
如果您的组件使用 P AWS Secrets Manager arameter Store 或存储参数的 AWS Systems Manager 功能,请执行以下操作:
-
-
要在组件中作为步骤检索值,请在 YAML 配置文件中嵌入 AWS Command Line Interface 命令。
-
在你的 AWS 账户的 Secrets Manager 或 Parameter Store 中创建相应的条目。使用默认密钥并提供有效值,这将有助于在 AWS Marketplace 测试过程中构建组件。例如,假设你有一个名为的参数,
saas_token其默认值为token,它使用参数存储。在这种情况下,请在参数存储中创建键值对。token用作钥匙。为该值输入适用于您的应用程序的有效 SaaS 令牌。请注意,存储在您的 AWS Marketplace 卖家账户中的值将仅用于 AWS Marketplace 测试目的。这些价值观不会与买家共享。
-
AWS Marketplace 在组件创建过程中选择的所有兼容操作系统版本中,自动为您的组件生成 Amazon 系统映像 (AMI)。在构建组件时,请至少选择一个兼容的操作系统版本。使用 EC2 Image Builder 管道创建和测试 AMI,验证您的组件与所有选定的操作系统版本的兼容性。
-
复制组件 ARN
在 Image Builder 上创建并测试组件后,复制并保存组件 ARN。使用 AWS Marketplace 目录 API 发布产品清单时,您将使用 ARN。
复制 Image Builder 组件 ARN
-
登录 AWS 管理控制台并打开 Image Builder 控制台,网址为https://console.aws.amazon.com/imagebuilder/
。 -
在左侧导航栏的 “保存的资源” 下,选择 “组件”。
-
在 “组件” 页面上,在 “筛选器所有者” 中,选择 “我拥有”。
-
选择组件名称。
-
在组件详情页面的摘要部分,复制 ARN。
Creating AWS Marketplace IAM 策略
创建以下 IAM 策略以授予对您的 Image Builder 组件和相关资源(例如 Amazon S3 存储桶和密钥)的 AWS Marketplace 访问权限。使用提供的策略示例。您可以将这些策略附加到 I AWS Marketplace AM 角色。有关创建策略的帮助,请参阅 IAM 用户指南中的使用 JSON 编辑器创建策略。
-
Image Builder 获取组件策略,允许 AWS Marketplace 在 Image Builder 上访问您的组件。此政策是必需的。将该策略命名为
mp_ib_ingest。 -
Amazon S3 读取访问策略, AWS Marketplace 允许从 S3 存储桶检索二进制文件。只有当您的组件使用
S3Download操作模块并将关联的二进制文件存储在 S3 存储桶中时,才需要使用此策略。将该策略命名为mp_ib_s3_read_only。 -
Secrets Manager 读取访问策略, AWS Marketplace 允许检索存储在 Secrets Manager 中的机密。只有当您的组件使用 Secrets Manager 存储密钥时,才需要使用此策略。将该策略命名为
mp_ib_sm_read_only。要将策略限制为仅限您的密钥,请将该Resource部分*中的替换为您的密钥。 -
参数存储读取权限策略,允许 AWS Marketplace 检索存储在 Parameter Store 中的密钥。只有当您的组件使用 Parameter Store 存储密钥时,才需要使用此策略。将该策略命名为
mp_ib_ssm_parameter_read_only。要将策略限制为仅限您的密钥,请将该Resource部分*中的替换为您的密钥。
正在创建 AWS Marketplace IAM 角色
使用以下过程创建一个 AWS Marketplace IAM 角色,该角色具有授予对您的组件及其依赖项的 AWS Marketplace 访问权限的策略。
要创建 AWS Marketplace IAM 角色
-
登录 AWS 管理控制台并打开 IAM 控制台,网址为https://console.aws.amazon.com/iam/
。 -
在左侧导航栏中,选择角色。
-
选择创建角色。
-
选择 “自定义信任策略”。
-
输入以下语句:
-
选择下一步。
-
添加您之前创建的 Image Builder 获取组件策略。获取组件策略是必需的。如果您的组件使用这些 AWS 服务,请为 S3、Secrets Manager 和 Parameter Store 添加相关策略。
-
选择下一步。
-
输入角色名称,例如
MPEC2IBIngestion。 -
选择创建角色。
Copy(复制) AWS Marketplace IAM 角色 ARN
创建 AWS Marketplace IAM 角色后,复制并保存角色 ARN。使用 AWS Marketplace 目录 API 发布列表时,您将使用 ARN。
要复制 AWS Marketplace IAM 角色 ARN
-
在 IAM 控制台的左侧导航栏中,选择角色。
-
选择您之前创建 AWS Marketplace 的 IAM 角色,例如
MPEC2IBIngestion。 -
在角色详情页面的摘要部分,复制 ARN。
准备好您的 Image Builder 组件清单
在发布 AWS Marketplace 房源之前,请确保准备好以下信息:
-
产品元数据 — 元数据包括产品徽标、产品标题、最终用户许可协议、支持的实例类型和 AWS 区域。
-
定价信息 — 您可以免费提供产品,也可以按小时费率提供,也可以按小时费率提供,并有初始免费试用期。不支持自带许可证 (BYOL)。
-
组件详情 — 详细信息包括组件 Amazon 资源编号 (ARN)、使用情况详情和 AWS Marketplace 将承担处理您的组件的 AWS Identity and Access Management (IAM) 角色。
发布您的 Image Builder 组件产品清单
本主题包含有关 AWS Marketplace 使用 AWS Marketplace 目录 API 发布 EC2 Image Builder 组件列表的说明。
先决条件
在发布 Image Builder 组件产品列表之前,请确保您具备以下信息:
-
在中注册为卖家 AWS Marketplace。有关更多信息,请参阅注册成为 AWS Marketplace 卖家
。 -
具有
AWSMarketplaceSellerFullAccess权限的 IAM 用户。 -
可公开访问的亚马逊简单存储服务 (Amazon S3) 存储桶,用于存放您的公司徽标和最终用户许可协议(如果您的组件中使用)。您将在您的 JS
ChangeSetON 文件中输入 S3 存储桶的网址。 -
AWS Command Line Interface (AWS CLI)。 有关更多信息,请参阅什么是 AWS 命令行界面? 在《AWS Command Line Interface 用户指南》中。
在上创建 Image Builder 组件产品 AWS Marketplace
要 AWS Marketplace 使用目录 API 创建 EC2 Image Builder 组件产品,请参阅创建产品。
更新 Image Builder 组件产品信息
您可以在 AWS Marketplace 管理门户上更新有关 Image Builder 组件产品的信息。
更新 Image Builder 组件产品信息
-
打开 AWS Marketplace 管理门户
,登录到卖家账户。 -
在 “产品” 菜单上,选择 “服务器”。
-
在服务器产品页面上,选择产品。
-
在商品详情页面的请求更改菜单上,选择与您要更新的信息相对应的商品。
-
提交任何更改后,该请求将以 “正在审核” 状态显示在 “申请” 选项卡上,完成后将变为 “成功”。
向现有 Image Builder 组件产品添加新版本
您可以通过 AWS Marketplace 使用向 Image Builder 组件产品添加新版本 AWS Marketplace Catalog API。
要添加新版本,请执行以下操作:
-
从 AWS Marketplace 管理门户中获取产品 ID。
-
打开 AWS Marketplace 管理门户
,登录到卖家账户。 -
在 “产品” 菜单上,选择 “服务器”。
-
在服务器产品页面上,选择产品。
-
在产品摘要中,复制产品 ID。
-
-
使用以下代码示例,创建 JSON 格式的变更集文件。在示例中,
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" } } } ] } } ] -
使用名称保存变更集文件。
addIBversion.json -
在您的终端或中 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 Instructions Recommended Instance typeAccessRoleArn,请参阅添加新版本。
| 错误代码 | 错误消息 |
|---|---|
未找到资产 |
|
未找到资产 |
|
重复组件名称 |
|
重复组件名称 |
|
DUPLICATE_COMPONENT_ARN |
|
DUPLICATE_COMPONENT_ARN |
|
SCAN_ERROR |
|
资产访问异常 |
|
资产访问异常 |
|
资产访问异常 |
|
资产访问异常 |
|
IMAGE_BUILDER_COMPONENT_PACKAGE 无效 |
|
IMAGE_BUILDER_COMPONENT_PACKAGE 无效 |
|
图片生成器组件太多了 |
|
卖家的公开资料不完整 |
|
无效描述 |
|
组件名称无效 |
|
支持的操作系统版本无效 |
|
路径格式无效 |
|
不兼容_OS_TYPE |
|
资产访问异常 |
|
资产访问异常 |
|
无效_IB_COMPONENT_BUILD_VERSION |
|
无效_IB_组件_参数 |
|
无效_IB_组件_参数 |
|
缺少_IB_COMPONENT_参数 |
|
无效_IB_组件_参数 |
|
LAUNCH_TEST 失败 |
|
SSHAuthFailedForUserAndKeypair |
|
无效的 IB_COMPONENT |
|
重复版本标题 |
|
版本标题无效 |
|
版本标题无效 |
|
版本标题无效 |
|
版本标题无效 |
|
无效的发行说明 |
|
无效的发行说明 |
|
无效的发行说明 |
|
无效的发行说明 |
|
无效_使用_指令 |
|
无效_使用_指令 |
|
无效_使用_指令 |
|
重复配送选项标题 |
|
无效的配送选项标题 |
|
更新有关现有版本的信息
更新有关现有版本的信息
-
从 AWS Marketplace 管理门户中获取产品 ID。
-
打开 AWS Marketplace 管理门户
,登录到卖家账户。 -
在 “产品” 菜单上,选择 “服务器”。
-
在服务器产品页面上,选择产品。
-
在产品摘要中,复制产品 ID。
-
-
在您的终端中,运行以下命令。在命令中,
your-product-ID替换为在步骤 1 中获得的 ID。aws marketplace-catalog describe-entity --catalog AWSMarketplace --region us-east-1 --entity-id 'your-product-ID' -
在返回的输出中,转到
DetailsDocument,Versions部分。复制要更新的版本的DeliveryOptions、Id值。 -
使用以下代码示例,创建 JSON 格式的变更集文件。在示例中,
your-product-ID替换为您在步骤 1 中获得的产品 ID。your-release-notes替换为您的发行说明。your-delivery-option-ID替换为您在步骤 3 中获得的配送选项的 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" } } } ] } } ] -
使用名称保存变更集文件。
updateVersionInfo.json -
在您的终端或中 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 目录 API 限制您的 Image Builder 组件产品的某个版本。 AWS Marketplace 您必须让您的产品至少有一个版本不受限制。 AWS Marketplace您不能限制对唯一的公共版本的访问。
更新有关现有版本的信息
-
从 AWS Marketplace 管理门户中获取产品 ID。
-
打开 AWS Marketplace 管理门户
,登录到卖家账户。 -
在 “产品” 菜单上,选择 “服务器”。
-
在服务器产品页面上,选择产品。
-
在产品摘要中,复制产品 ID。
-
-
在您的终端中,运行以下命令。在命令中,
your-product-ID替换为在步骤 1 中获得的 ID。aws marketplace-catalog describe-entity --catalog AWSMarketplace --region us-east-1 --entity-id 'your-product-ID' -
在返回的输出中,转到
DetailsDocument,Versions部分。复制要更新的版本的DeliveryOptions、Id值。 -
使用以下代码示例,创建 JSON 格式的变更集文件。在示例中,
your-product-ID替换为您在步骤 1 中获得的产品 ID。your-delivery-option-ID替换为您在步骤 3 中获得的配送选项的 ID。[ { "ChangeType": "RestrictDeliveryOptions", "Entity": { "Identifier": "your-product-ID", "Type": "AmiProduct@1.0" }, "DetailsDocument": { "DeliveryOptionIds": [ "your-delivery-option-ID" ] } } ] -
使用名称保存变更集文件。
restrictec2ibversion.json -
在您的终端或中 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-idchangesetID -
在AWS Marketplace 管理门户
的 “请求” 选项卡上查看请求状态。
保护软件下载
为了保护 ISV 软件的知识产权并确保向 AWS Marketplace 买家提供稳定、一致的软件交付,请 AWS Marketplace 自动解析S3Download和WebDownload操作组件中的模块。然后,引用的文件将安全地存储在由管理的私有 Amazon S3 存储桶中 AWS Marketplace。要选择退出此摄取过程并独立管理软件下载,请运行使用wget或curl下载命令的 bash 脚本。