

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

# 在上添加您的容器产品的新版本 AWS Marketplace
<a name="container-add-version"></a>

作为 AWS Marketplace 卖家，您可以添加集装箱商品的新版本、管理版本和更新版本信息。您的产品在其生命周期内可能有多个版本。每个版本都有一组特定于该版本的容器映像。以下主题将说明如何管理容器产品的产品版本。

**注意**  
只有为产品创建了产品 ID 和定价，才能向产品添加版本。有关这些步骤的更多信息，请参阅[第 1 步：为容器产品创建产品 ID 和产品代码](container-product-getting-started.md#create-initial-container-product)。

**Topics**
+ [第 1 步：添加存储库](#add-repositories)
+ [第 2 步：将容器映像和构件上传到存储库](#upload-resources)
+ [第 3 步：向容器产品添加新版本](#add-new-version)
+ [第 4 步：更新版本信息](#container-product-updating-version)
+ [限制 Amazon EKS 附加组件的版本](#restriciting-version-eks-addon)

## 第 1 步：添加存储库
<a name="add-repositories"></a>

您的产品容器映像和其他构件存储在 AWS Marketplace中的存储库中。通常，您可以为所需的每个构件创建一个存储库，但该存储库可以存储该构件的多个版本（使用不同的标签）。

**注意**  
产品部署中的所有映像都必须使用 AWS Marketplace 存储库中的映像。

以下过程介绍如何在中添加任何所需的存储库 AWS Marketplace。

**要添加存储库，请执行以下操作：**

1. 登录到 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/)。

1. 从**产品**菜单中选择**服务器**。

1. 在**服务器产品**选项卡上，选择要修改的产品，然后从**请求更改**下拉列表中选择**添加存储库**。

1. 输入您要创建的存储库的名称。如果要创建多个新的存储库：
   + 针对每个新增存储库，选择**添加新存储库**。
   + 为其指定唯一名称。您所选择的唯一名称必须在您卖家账户的所有产品中保持唯一性。
**注意**  
存储库将具有以下结构：`<repositoryID>.dkr.ecr.us-east-1.amazonaws.com/<sellerName>/<repositoryName>`. 当您将项目添加到存储库时（在以下过程中），它们将获得一个标签并具有以下结构：`<repositoryID>.dkr.ecr.us-east-1.amazonaws.com/<sellerName>/<repositoryName>:<tag>`。  
`repositoryID`是的内部 ID AWS Marketplace。
`sellerName` 是基于您为卖家账户创建的名称。当您的卖家显示名称生成无效`sellerName`的存储库前缀时，AWS Marketplace 会自动用 UUID（通用唯一标识符）代替卖家名称。要更改存储库名称中的 UUID 前缀，请联系 AWS Marketplace 运营团队。
`respositoryName`是在此步骤中定义的。
`tag` 是在将构件上传到存储库时设置的。

1. 选择**提交**。

**注意**  
每个产品最多可以有 70 个存储库。

新请求已创建并显示在**请求**选项卡上。完成后，您可以在几分钟之内开始向已创建的存储库中添加容器映像和其他构件。

## 第 2 步：将容器映像和构件上传到存储库
<a name="upload-resources"></a>

**要将容器映像和构件上传到存储库，请执行以下操作：**

1. 登录到 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/)。

1. 从**产品**菜单中选择**服务器**。

1. 在**服务器产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**添加存储库**。

1. 选择**查看现有存储库**。

1. 选择要上传到的存储库。

1. 选择**查看推送命令**以打开指令列表，其中包括可用于将 Docker 容器映像和 Helm 图表推送到该存储库的命令。

   有关如何将容器映像和其他构件推送到存储库的一般信息，请参阅《Amazon Elastic Container Registry 用户指南》**中的[推送映像](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-push.html)。
**注意**  
调用 `docker pull` 或 `docker push` 时，您可以使用以下Amazon Elastic Container Registry (Amazon ECR) API 操作：  
`DescribeImages` – 用于查看存储库中有关映像的元数据。
`GetAuthorizationToken` – 用于在将构件上传到存储库之前进行身份验证，然后使用 `docker pull` 或 `docker push` 命令。
`ListImages` – 用于查看您推送的映像列表。

1. 使用列出的命令将任何需要的工件从本地存储库推送到产品的 AWS Marketplace 存储库。
**注意**  
您在 `push` 命令中提供的 **tag** 用于区分要上传到存储库的构件的版本。使用对构件所属版本有意义的标签。

1. 对版本中需要的每个容器映像或构件重复此操作。
**注意**  
您的版本在每个交付选项中最多可以包含 50 个容器映像或构件。有关交付选项的更多信息，请参阅以下过程。

上传构件后，您就可以创建产品版本了。

**注意**  
系统会自动扫描您的容器映像，以查看它们是否符合[基于容器的产品要求 AWS Marketplace](container-product-policies.md)。有关更多信息，请参阅 [容器产品扫描是否存在安全问题](container-product-getting-started.md#container-security)。

### 添加新的交付选项
<a name="add-delivery-option"></a>

容器产品的每个版本都需要一个交付选项。交付选项指定买家可使用的部署选项。根据以下交付选项之一，您需要将相应的构件上传到存储库。
+ 对于**容器镜像**传送选项，请将安装产品所需的所有容器镜像上传到控制台中创建的亚马逊弹性容器注册表 (Amazon ECR) Container Registry 存储库。 AWS Marketplace 
+ 对于**Helm图表**交付选项，请将Helm图表和容器图像上传到 AWS Marketplace 控制台中创建的 Amazon ECR 存储库中。
+ 对于 A **mazon EKS 控制台附加组件**交付选项，请将Helm图表和容器图像上传到在 AWS Marketplace 控制台中创建的 Amazon ECR 存储库中。

## 第 3 步：向容器产品添加新版本
<a name="add-new-version"></a>

**注意**  
如果您在向容器添加新版本时收到任何错误，请参阅《AWS Marketplace Catalog API 参考》**中的[添加新版本异步错误表](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/container-products.html#container-add-version)。

**要向容器产品添加新版本，请执行以下操作：**

1. 登录到 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/)。

1. 从**产品**菜单中选择**服务器**。

1. 在**服务器产品**选项卡上，选择要向其添加版本的产品。然后，从**请求更改**下拉列表中选择**添加新版本**。

1. 在**添加新版本**页面上，输入**版本标题**和**发布说明**。

1. 输入版本详细信息后，下一步是添加交付选项。交付选项是一组说明和信息，买家可以使用这些说明和信息从您的产品版本启动软件。交付选项被称为买家的*交付选项*。
**注意**  
您的产品可以支持具有不同容器映像的多个平台（例如 Kubernetes 和 Ubuntu 部署）。您可以为客户设置产品的每种方式创建一个交付选项，每个版本的产品最多可创建四个交付选项。

   1. 如果产品在其他版本中已有交付选项，则可以使用现有选项作为模板，向新版本添加交付选项。在**交付选项**中，从列表中选择要添加的交付选项。您可以按照以下步骤中的说明编辑该选项。

   1. 要添加新的交付选项，请选择**新交付选项**。添加选项后，按照以下步骤中的说明，对其进行配置。

1. 为交付选项选择一种交付方式。交付方式决定了买家将如何启动您的软件。
   + 对于**容器映像**交付选项，请提供在 AWS Marketplace 控制台中创建的 Amazon Elastic Container Registry (Amazon ECR) 存储库中的容器映像的路径。买家使用容器映像路径通过将映像直接拉入其环境来启动软件。
   + 对于 **Helm 图表**交付选项，请提供在 AWS Marketplace 控制台中创建的 Amazon ECR 存储库中 Helm 图表的路径。买家在其部署环境中安装 Helm 图表以启动软件。
   + 对于 **Amazon EKS 控制台附加组件**交付选项，请提供在 AWS Marketplace 控制台中创建的 Amazon ECR 存储库中 Helm 图表的路径。买家使用亚马逊 EKS 控制台或原生 Amazon EKS 附加组件安装容器 APIs 来启动软件。有关更多信息，请参阅[来自 Amazon EKS 的可用 Amazon EKS 附加组件](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html#workloads-add-ons-available-eks)。

   1. 要添加**容器映像**交付选项，请执行以下步骤：

      1. 在**容器映像**中，将 Amazon ECR URL 添加到包含产品版本软件的容器映像中。

      1. 在**交付选项标题**和**部署选项描述**中，输入此交付选项的标题和描述。

      1. 在**使用说明**中，输入详细信息，以帮助买家在启动软件后使用该软件。

      1. 在**支持的服务**中，选择买家可以在其中启动软件的环境。

      1. 在**部署模板**中，添加买家可以用来启动软件的资源。输入每个模板的标题和资源 URL。

   1. 要添加 **Helm 图表**交付选项，请执行以下步骤：

      1. 在 **Helm 图表**中，将 Amazon ECR URL 添加到 Helm 图表中，买家将在部署环境中安装该网址以启动您的软件。

      1. 在**容器映像**中，将 Amazon ECR URL 添加到包含产品版本软件的容器映像中。

      1. 在**交付选项标题**和**部署选项描述**中，输入此交付选项的标题和描述。

      1. 在**使用说明**中，输入详细信息，以帮助买家在启动软件后使用该软件。

      1. 在**支持的服务**中，选择买家可以在其中启动软件的环境。

      1. *可选 - * 在 **Helm 版本名称**中，输入将在其中安装 Helm 图表的 Kubernetes 命名空间的名称。

      1. *可选 - * 在 **Helm 安装命名空间**中，输入 `helm install` 命令将使用的 Helm 版本的名称。

      1. *可选 - * 在 **Kubernetes 服务账户名称**中，输入将用于连接 AWS Identity and Access Management （IAM）的 Kubernetes 服务账户的名称。Kubernetes 服务账户调用许可或计量等 AWS 服务。

      1. 在**覆盖参数**中，输入将在启动软件的 Helm CLI 命令中使用的参数。买家可使用这些参数覆盖提供的默认值。使用 AWS Marketplace 管理控制台时，参数限制为 15 个，但使用时没有限制 AWS Marketplace Catalog API。有关更多信息，请参阅[向基于容器的产品添加新版本](https://docs.aws.amazon.com/marketplace-catalog/latest/api-reference/container-products.html#container-add-version)。
**注意**  
一些**覆盖参数**是必需的。Amazon EKS Anywhere 产品要求为 `"${AWSMP_LICENSE_SECRET}"` 设置为 `DefaultValue` 的许可证密钥**覆盖参数**。对于付费产品，您必须为 `"${AWSMP_SERVICE_ACCOUNT}"` 设置为 `DefaultValue` 的服务账号配置**覆盖参数**。

      1. 选择 “**隐藏密码和机密**” 以屏蔽控制台、命令行工具和中的敏感信息 APIs。有关更多信息，请参阅《AWS CloudFormation 用户指南》**中[参数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)中的 `NoEcho` 参数文档。

   1. 要添加 **Amazon EKS 控制台附加组件**交付选项，请确保该构件符合 [Amazon EKS 附加组件产品的要求](container-product-policies.md#publishing-eks-add-on)，然后执行以下步骤：
**注意**  
每个版本仅支持一个 Amazon EKS 附加组件交付选项。在您正在处理的当前版本发布到 Amazon EKS 控制台之前，您无法添加新版本。

      1. 在 **Helm 图表**中，将 Amazon ECR URL 添加到 Helm 图表中，买家将在部署环境中安装该网址以启动您的软件。

      1. 在**容器映像**中，将 Amazon ECR URL 添加到包含产品版本软件的容器映像中。确保列出了 Helm 图表内的所有映像。

      1. 在**交付选项标题**和**部署选项描述**中，输入此交付选项的标题和描述。

      1. 在**可见性**中，保持默认值**有限**选项。

      1. 在**附加组件名称**中，输入此附加组件的唯一名称。您输入的附加组件名称在 Amazon EKS 控制台中显示时将附加上卖家的名称。

      1. 在**附加组件版本**中，输入安装或升级此附加组件时将显示的附加组件版本。请遵循格式 `major.minor.patch`。

      1. 在**附加组件类型**中，从下拉列表中为您的附加组件选择一个类别。

      1. 在**Kubernetes 版本**中，选择您的附加组件将支持的所有 Kubernetes 版本。

      1. 在**架构**中，选择您的附加组件支持的平台架构。选项为 **AMD64** 和 **ARM64**。我们建议同时支持这两种架构，以最大限度地提高兼容性。如果您的附加组件不支持 ARM64 设备，则必须指定添加支持的计划日期，然后才能在所有广告中发布您的产品 AWS 区域。

      1. 在**命名空间**中，输入要在其中安装附加组件的唯一 Kubernetes 命名空间。安装第三方附加组件时不支持 `default`、`kube-system` 和 `kube-public` 命名空间。

      1. 在**环境覆盖参数**中，您最多可以从 Amazon EKS 附加组件框架中选择 2 个环境参数。您可以将参数名称从 values.yaml 映射到这些环境变量，即 `${AWS_REGION}` 和 `${AWS_EKS_CLUSTER_NAME}`。

1. 要添加其他交付选项，请选择**新交付选项**，然后重复前面的步骤进行配置。

1. 选择**提交**。

## 第 4 步：更新版本信息
<a name="container-product-updating-version"></a>

创建版本后，可通过修改与版本关联的信息，向买家提供更新的信息。例如，如果您计划在版本 1.1 发布后限制版本 1.0，则可以更新版本 1.0 的描述以引导买家使用版本 1.1。提供版本 1.0 的受限日期。您可以从 AWS Marketplace 管理门户中更新版本信息。

**要更新版本信息，请执行以下操作：**

1. 登录到 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/)。

1. 从**产品**菜单中选择**服务器**。

1. 在**服务器产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新版本信息**。

1. 在**更新版本**页面上，选择要更新的版本。

1. 对所选版本进行更新。可供更新的字段取决于产品版本或交付选项的状态。

   1. 对于所有版本，您可以更新**发布说明**。

   1. 对于尚未公开发布的版本，您可以更新**版本标题**。

   1. 对于未受限制的交付选项，您可以更新以下字段：
      + **描述**
      + **使用说明**
      + **支持的服务**

   1. 对于尚未公开发布的版本中的交付选项，您可以更新以下字段：
      + **交付选项标题**
      + **Helm 图表**（仅适用于 **Helm 图表**交付选项）
      + **容器映像**
      + **部署资源**
      + **AddOn 名称**
      + **AddOn 版本**
      + **AddOn Type**
      + **Helm 图表 URI**
      + **CompatibleKubernetesVersions**
      + **SupportedArchitectures**
      + **命名空间**
      + **EnvironmentOverrideParameters**

   1. 对于公开版本中的配送选项，您可以更新**SupportedArchitectures**。

1. 选择**提交**。

1. 验证请求是否显示在**请求**选项卡上，状态为**正在审核**。

您可以随时从[服务器产品](https://aws.amazon.com/marketplace/management/products/server)页面的**请求**选项卡中查看请求的状态。

## 限制 Amazon EKS 附加组件的版本
<a name="restriciting-version-eks-addon"></a>

要限制作为附加组件发布的容器产品版本，请使用 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/) 底部的“联系我们”表单联系 AWS Marketplace 运营团队。