View a markdown version of this page

使用 EC2 映像生成器组件产品 - AWS Marketplace

对 AWS Marketplace API 参考进行了重组。有关支持的 API 操作的更多信息,请参阅 AWS 市场 API 参考

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 EC2 映像生成器组件产品

作为 AWS Marketplace 卖家,您可以使用 EC2 映像生成器组件列出交付给 AWS 市场买家的 AMI-based 产品。要创建组件并发布 AWS Marketplace 列表,请按顺序完成以下部分。

构建和测试您的映像生成器组件

在映像生成器上构建和测试您的组件。有关说明,请参阅映像生成器用户指南中的为映像生成器镜像开发自定义组件。使用映像生成器创建组件时,请确保执行以下操作:

  • 该组件及其所有基础依赖关系,例如亚马逊简单存储服务 (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 命令。

    • 在 AWS 账户的凭据管理器或参数存储中创建相应的条目。使用默认密钥并提供有效值,这将有助于在 AWS Marketplace 测试过程中构建组件。例如,假设您调saas_token用了一个使用参数存储的参数token,其默认值为。在这种情况下,在参数存储中创建键值对。用token作密钥。对于该值,请为您的应用程序输入有效的 SaaS 令牌。

      请注意,存储在 AWS Marketplace 卖家账户中的值仅用于 AWS Marketplace 测试目的。这些价值观不会与买家共享。

    • AWS Marketplace 针对您在组件创建过程中选择的所有兼容操作系统版本,自动为您的组件生成亚马逊系统映像 (AMI)。构建组件时,请至少选择一个兼容的操作系统版本。使用 EC2 映像生成器管道创建和测试 AMI,验证您的组件与所有选定操作系统版本的兼容性。

复制组件 ARN

在映像生成器上创建和测试组件后,复制并保存该组件 ARN。当您使用 AWS Marketplace 目录 API 发布产品清单时,您将使用 ARN。

复制映像生成器组件 ARN
  1. 登录 AWS 管理控制台并在上打开映像生成器控制台https://console.aws.amazon.com/imagebuilder/

  2. 在左侧导航栏的 “保存的资源” 下,选择 “组件”

  3. 在 “组件” 页面上,对于 “筛选器所有者”,选择 “由我拥有”

  4. 选择组件名称。

  5. 在组件详细信息页面的摘要部分中,复制 ARN。

Creating AWS Marketplace IAM 策略

创建以下 IAM 策略以授予对您的映像生成器组件和相关资源(如 Amazon S3 存储桶和密钥)的 AWS Marketplace 访问权限。使用提供的示例策略。您将这些策略附加到 AWS Marketplace IAM 角色。有关创建策略的帮助,请参阅 IAM 用户指南中的使用 JSON 编辑器创建策略

  • 映像生成器获取组件政策,允许您在映像生成器上 AWS Marketplace 访问您的组件。此政策是必需的。将该策略命名为 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/*" ] } ] }
  • 密钥管理器读取权限策略, AWS Marketplace 允许检索存储在密钥管理器中的密钥。仅当您的组件使用密钥管理器存储密钥时,才需要此策略。将该策略命名为 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 管理控制台并在上打开 IAM 控制台https://console.aws.amazon.com/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. 添加您之前创建的映像生成器获取组件策略。获取组件策略是必需的。如果您的组件使用这些 AWS 服务,请为 S3、密钥管理器和参数存储添加相关策略。

  8. 选择下一步

  9. 输入角色名称,例如MPEC2IBIngestion

  10. 选择创建角色

Copy(复制) AWS Marketplace IAM 角色 ARN

创建 AWS Marketplace IAM 角色后,复制并保存角色 ARN。使用 AWS Marketplace 目录 API 发布清单时,您将使用 ARN。

要复制 AWS Marketplace IAM 角色 ARN
  1. 在 IAM 控制台的左侧导航栏中,选择角色

  2. 选择您之前创建的 AWS Marketplace IAM 角色,例如MPEC2IBIngestion

  3. 在角色详细信息页面的摘要部分中,复制 ARN。

准备您的映像生成器组件清单

在发布您的 AWS Marketplace 清单之前,请确保您准备好以下信息:

  • 产品元数据 — 元数据包括产品徽标、产品标题、最终用户许可协议、支持的实例类型和 AWS 区域。

  • 定价信息 — 您可以免费提供产品、按小时费率提供产品,也可以在初始免费试用期内按小时费率提供产品。不支持自带许可证 (BYOL)。

  • 组件详情 — 详细信息包括组件的亚马逊资源编号 (ARN)、使用情况详细信息以及 AWS Marketplace 将承担处理您的组件的 AWS Identity and Access Management (IAM) 角色。

发布您的映像生成器组件产品清单

本主题包含有关 AWS Marketplace 使用 AWS Marketplace 目录 API 发布 EC2 映像生成器组件清单的说明。

先决条件

在发布图像生成器组件产品清单之前,请确保您具备以下条件:

  • 在中注册为卖家 AWS Marketplace。有关更多信息,请参阅注册成为 AWS 商城卖家

  • 具有AWSMarketplaceSellerFullAccess权限的 IAM 用户。

  • 一个可公开访问的亚马逊简单存储服务 (Amazon S3) 存储桶,用于托管您的公司徽标和 EULA(如果在您的组件中使用)。您将在 JS ChangeSet ON 文件中输入 S3 存储桶的 URL。

  • AWS Command Line Interface (AWS CLI)。有关更多信息,请参阅什么是 AWS 命令行接口?在《AWS Command Line Interface 用户指南》中

在上创建映像生成器组件产品 AWS Marketplace

要 AWS Marketplace 使用目录 API 创建 EC2 映像生成器组件产品,请参阅创建产品

更新映像生成器组件产品信息

您可以在 AWS Marketplace 管理门户上更新有关映像生成器组件产品的信息。

更新映像生成器组件产品信息
  1. 打开 AWS Marketplace 管理门户,登录到卖家账户。

  2. 产品” 菜单上,选择 “服务器”

  3. 服务器产品页面上,选择产品。

  4. 在商品详情页面的请求更改菜单上,选择与您要更新的信息相对应的商品。

  5. 提交任何更改后,该请求将显示在 “请求” 选项卡上,状态为 “正在审核”,完成后将变为 “成功”。

向现有的映像生成器组件产品添加新版本

您可以使用向映像生成器组件产品添加新版本 AWS Marketplace Catalog API。 AWS Marketplace

要添加新版本,请执行以下操作:
  1. 从 AWS Marketplace 管理门户中获取产品 ID。

    1. 打开 AWS Marketplace 管理门户,登录到卖家账户。

    2. 产品” 菜单上,选择 “服务器”

    3. 服务器产品页面上,选择产品。

    4. 产品摘要中,复制产品 ID

  2. 使用以下代码示例,创建 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" } } } ] } } ]
  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获取变更请求状态的更多信息,请参阅使用变更集

注意

以下错误代码特定于映像生成器交付方法。有关、和等字段的现有错误消息 Usage Instructions Recommended Instance typeAccessRoleArn,请参阅添加新版本

错误代码 错误消息

未找到资产

检查 [ AWS 账户 ID] 账户中是否存在 [组件 arn],以及提供的 AccessARN [ARN] 是否有权与之共享此映像生成器组件。 AWS Marketplace

未找到资产

组件 [x] 中指定的 S3 链接 [x] 不存在。在组件内提供有效的 S3 链接。

重复的组件名称

组件名称 [x] 已存在于同一版本中。提供不同的组件名称。

重复的组件名称

您提供的组件名称 [x] 已被其他产品使用。提供不同的组件名称。

DUPLICATE_COMPONENT_ARN

组件 Arn [x] 必须不同于本产品同一版本的其他交付选项中使用的组件 Arn。

DUPLICATE_COMPONENT_ARN

组件 ARN [x] 必须不同于本产品其他版本中使用的组件 ARN。

扫描错误

修复组件 [x] 上的安全漏洞 [y]。

资产访问异常

我们没有从指定的 S3 存储桶读取内容所需的权限 [x]。确保 S3 存储桶具有相应的读取权限。

资产访问异常

我们没有读取指定组件 ARN [x] 内容的必要权限。确保组件 ARN 具有相应的读取权限。

资产访问异常

我们没有必要的权限来读取指定包 URI [x] 的内容。确保软件包 URI 具有相应的读取权限。

资产访问异常

无法从 HTTP 源 [x] 读取。验证提供的 HTTP 源是否正确。

无效的映像生成器组件包

组件资产超过了摄取的大小限制。缩小 S3/web 下载量或消除不必要的下载以继续。

无效的映像生成器组件包

组件资产需要很长时间才能提取。确保您的网络连接稳定且有足够的带宽。

图像生成器组件太多了

每个产品最多支持 5 个唯一的组件名称,限制了额外的交付选项。

不完整的_卖家_公众资料

您的卖家公开资料不完整。在向产品添加版本之前,请填写您的公开个人资料。

无效的描述

描述缺失。在组件 [x] 中提供少于 1024 个字符的描述。

组件名称无效

提供少于 [x] 个字符的组件名称。

支持的操作系统版本无效

缺少操作系统版本。在组件 [x] 中提供有效的支持的操作系统版本。

路径格式无效

阶段 [PHASE_NAME] 中的步骤 [STEP_NAME] 不允许使用 S3 或 Web URL 进行操作。 InstallMSI/UninstallMSI 确保指定的路径是执行操作的系统可以访问的有效本地路径。

不兼容操作系统类型

指定的组件操作系统类型 [x] 与基础映像的平台不兼容。提供与基础映像兼容的操作系统类型。

资产访问异常

我们没有从指定的 SSM 参数 [x] 读取内容的必要权限。确保 API 输入中提供的 IAM 访问角色具有所需的读取权限。

资产访问异常

我们没有必要的权限来读取指定 SecretsManager 密钥 [x] 中的内容。确保 API 输入中提供的 IAM 访问角色具有所需的读取权限。

无效的 IB_COMPONENT_BUILD_VERSION

组件 ARN [x] 的构建版本为 [y]。 AWS Marketplace 仅支持构建版本 1。使用构建版本 1 创建新的 EC2 映像生成器版本,然后重试 AWS Marketplace

无效的 IB_COMPONENT_PARAMENT_PARAM

无法解析组件 [y] 的输入 [x] 中的 SSM 参数。

无效的 IB_COMPONENT_PARAMENT_PARAM

无法解析组件 [y] 的输入 [x] 中的 SecretsManager 密钥。

缺少_IB_COMPONENT_参数

在组件 [x] 中找不到输入 [y] 的参数

无效的 IB_COMPONENT_PARAMENT_PARAM

为组件 [y] 中的参数 [x] 提供默认值。

启动测试失败

组件 [x] 的启动测试失败。错误消息:[z]

SSHAuthFailedForUserAndKeypair

无法使用操作系统默认用户名 [X] 登录实例。

INVALID_IB_COMPONENT

组件构建阶段是必需的。向组件 [x] 添加有效的构建阶段

重复版本标题

版本标题必须与本产品的任何其他版本标题不同。

版本标题无效

删除商标符号前的空格。

版本标题无效

移除不支持的字符:[x, y, z]

版本标题无效

删除版本标题开头的空格。

版本标题无效

提供少于 [x] 个字符的版本标题。

无效的发行说明

删除商标符号前的空格。

无效的发行说明

移除不支持的字符:[x, y, z]

无效的发行说明

删除发行说明开头的空格。

无效的发行说明

提供少于 (x) 个字符的发行说明。

无效的使用指令

删除商标符号前的空格。

无效的使用指令

移除不支持的字符:[x, y, z]

无效的使用指令

提供少于 (x) 个字符的使用说明。

重复配送选项标题

提供独特的配送选项标题。

无效的配送选项标题

配送选项标题已存在,请使用其他标题重试。

更新有关现有版本的信息

更新有关现有版本的信息
  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. 在返回的输出中,转到DetailsDocument, Versions 部分。复制要DeliveryOptions更新的版本的,Id值。

  4. 使用以下代码示例,创建 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" } } } ] } } ]
  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值。要监控变更集,请参阅监控变更集

限制映像生成器组件的产品版本

限制版本会使买家无法使用该版本。您可以限制图像生成器组件产品的某个版本 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. 在返回的输出中,转到DetailsDocument, Versions 部分。复制要DeliveryOptions更新的版本的,Id值。

  4. 使用以下代码示例,创建 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" ] } } ]
  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值。您可以通过以下方式监控变更集的进度:

保护软件下载

为了保护 ISV 软件知识产权并确保向 AWS Marketplace 买家提供稳定、一致的软件,请 AWS Marketplace 自动解析S3DownloadWebDownload操作组件中的模块。然后,引用的文件将安全地存储在由管理的私有 Amazon S3 存储桶中 AWS Marketplace。要选择退出此摄取过程并独立管理软件下载,请运行使用wgetcurl下载命令的 bash 脚本。