

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

# 基于 SaaS 的产品 AWS Marketplace
<a name="saas-products"></a>

借助软件即服务 (SaaS) 产品，您可以部署托管在 AWS 基础架构上的软件，并授予 AWS Marketplace 购买者在您的 AWS 环境中访问该软件的权限。您负责管理软件中的客户访问、账户创建、资源预置和账户管理。创建初始 SaaS 产品后，您可以提交更改请求并在中配置其属性 AWS Marketplace，包括您的产品描述、按国家/地区划分的供货情况、定价等。您还可以配置 SaaS 订阅和合同集成。以下主题提供了入门所需的信息。

有关将您 APIs 与亚马逊 API Gateway 集成的信息，请参阅亚马逊 [API Gateway 开发者指南 AWS Marketplace中的 APIs 通过方式出售您](https://docs.aws.amazon.com/apigateway/latest/developerguide/sell-api-as-saas-on-aws-marketplace.html)*的 API 网关*。

如需有关 SaaS 产品的帮助，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。

**Topics**
+ [AWS Marketplace 上的 SaaS 产品入门](saas-getting-started.md)
+ [规划您的 SaaS 产品](saas-prepare.md)
+ [适用于 SaaS 的产品指南 AWS Marketplace](saas-guidelines.md)
+ [SaaS 产品定价在 AWS Marketplace](saas-pricing-models.md)
+ [在中创建 SaaS 免费试用优惠 AWS Marketplace](saas-free-trials.md)
+ [通过以下方式吸引客户使用您的 SaaS 产品 AWS Marketplace](saas-product-customer-setup.md)
+ [SaaS 产品的 Amazon SNS 通知](saas-notification.md)
+ [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)
+ [访问 AWS Marketplace 计量和授权服务 APIs](saas-integration-metering-and-entitlement-apis.md)
+ [在 SaaS 产品上进行报告 AWS Marketplace](saas-reporting.md)
+ [SaaS 产品集成的代码示例](saas-code-examples.md)
+ [使用亚马逊 VPC 配送您的商品 AWS PrivateLink](privatelink.md)
+ [SaaS 产品问题排查](troubleshoot-saas.md)

# AWS Marketplace 上的 SaaS 产品入门
<a name="saas-getting-started"></a>

AWS Marketplace 卖家可以将软件即服务（SaaS）产品添加到 AWS Marketplace。这包括根据 SaaS 产品的计费模式将其与相应的 AWS Marketplace API 操作集成。本主题概述了创建和配置 SaaS 产品的过程，从开始着手操作所需的必要先决条件开始介绍。

## 先决条件
<a name="saas-prereqs"></a>

在开始之前，您必须满足以下先决条件：

1. 访问和使用 [AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/)。您可以使用此工具注册为卖家，然后管理在 AWS Marketplace 上销售的产品。有关更多信息，请参阅[AWS Marketplace 管理门户](user-guide-for-sellers.md#aws-marketplace-management-portal)。

1. 注册为卖家并提交您的税务和银行信息。有关更多信息，请参阅 [注册过程](registration-process.md)。

1. 规划如何在 AWS Marketplace 中创建和集成 SaaS 产品。有关更多信息，请参阅 [规划您的 SaaS 产品](saas-prepare.md)。

## 后续步骤
<a name="saas-next-steps"></a>

完成所需的先决条件后，您就可以创建和配置 SaaS 产品。

**Topics**
+ [先决条件](#saas-prereqs)
+ [后续步骤](#saas-next-steps)
+ [AWS Marketplace 中的 SaaS 产品生命周期](saas-product-lifecycle.md)
+ [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)
+ [在上创建初始 SaaS 产品页面 AWS Marketplace](saas-create-product-page.md)
+ [在中配置 SaaS 产品设置 AWS Marketplace](saas-product-settings.md)
+ [将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)
+ [将你的 SaaS 合同产品与 AWS Marketplace](saas-integrate-contract.md)
+ [将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)
+ [部署无服务器 SaaS 集成](deploy-serverless-saas.md)

# AWS Marketplace 中的 SaaS 产品生命周期
<a name="saas-product-lifecycle"></a>

当您在 AWS Marketplace 中创建软件即服务（SaaS）产品时，该产品最初受限发布，因此只有您的账户才能访问它。准备就绪后，您可以将其发布到 AWS Marketplace 目录中，以允许买家订阅和购买您的产品。以下主题提供了有关 SaaS 产品生命周期的信息。有关创建 SaaS 产品的更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。

在 SaaS 产品页面上，您可以查看您的产品列表。根据其在产品生命周期中的阶段，产品将具有以下状态之一：
+ **暂存** – 未完成的产品，您仍在为其添加信息。在第一次**保存并退出**自助服务体验时，成功的变更请求会使用您提交的完成步骤中的信息创建未发布的产品。在此状态下，您可以继续向产品添加信息或通过变更请求更改已提交的详细信息。
+ **受限** – 产品在提交给系统并通过系统中的所有验证后即已完成。然后，产品将发布到**受限**状态。此时，该产品有一个详细信息页面，只有您的账户和您列入允许列表的人才能访问该页面。您可以通过详细信息页面测试您的产品。如需更多信息或帮助，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。
+ **公开** – 当您准备发布产品以便买家可以查看和订阅产品时，您可以使用**更新可见性**更改请求。此请求将启动AWS Marketplace 卖家运营团队根据 AWS 策略审查和审核您的产品的工作流程。产品获得批准并处理变更请求后，产品将从**受限**状态更改为**公开**。有关 AWS准则的信息，请参阅 [SaaS 产品准则](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-guidelines.html)。
+ **受限** – 果您想阻止新用户订阅您的产品，则可以使用**更新可见性**更改请求来限制该产品。**受限**状态表示现有用户可以继续使用该产品。但是，该产品将不再对公众可见，也不会再向新用户提供。

您可以在**暂存**、**受限**和**公开**状态下更新您的产品。有关更多信息，请参阅[更新产品信息](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-product-settings.html#update-product-information)。

# 在中创建 SaaS 产品 AWS Marketplace
<a name="saas-create-product"></a>

作为 AWS Marketplace 卖家，您可以将软件即服务 (SaaS) 产品添加到 AWS Marketplace。这包括根据您的计费模式创建您的 SaaS 产品并将其与相应的 AWS Marketplace API 操作集成。要将软件作为 SaaS 产品进行销售 AWS Marketplace，请遵循以下主要步骤：
+ 在中创建 SaaS 产品 AWS Marketplace。
+ 将 SaaS [订阅](saas-integrate-subscription.md)、[合同](saas-integrate-contract.md)或[合同与 pay-as-you-go](saas-integrate-contract-with-pay.md)产品集成 AWS Marketplace。
+ 测试 pay-as-you-go产品[与集成的[订阅](saas-integrate-subscription.md#saas-subscription-integration-testing)、[合同](saas-integrate-contract.md#saas-contract-integration-testing)](saas-integrate-contract-with-pay.md#saas-contract-consumption-integration-testing)或合同 AWS Marketplace。
+ 提交产品以完成发布。

以下过程向您展示了如何在中创建 SaaS 产品 AWS Marketplace。

## 创建 SaaS 产品
<a name="saas-creating-self-service"></a>

**要创建 SaaS 产品，请执行以下操作：**

1. **决定上架一款 SaaS 产品**

   有一款你想销售的 SaaS 产品 AWS Marketplace。查看并了解如何[规划您的 SaaS 产品](saas-prepare.md)。

1. **确定定价和优惠类型**

   SaaS 产品有三种优惠类型：订阅、合同和合同 pay-as-you-go。您选择的优惠类型会影响您的 SaaS 产品与集成的方式 AWS Marketplace。有关更多信息，请参阅 [规划您的定价](saas-prepare.md#plan-pricing)。

1. **收集资产**

   收集所需的资产以提交产品。资产包括：
   + 产品徽标 URL – 一个可公开访问的 Amazon S3 URL，其中包含您提供的产品徽标的清晰图像。
   + 最终用户许可协议 (EULA) URL – 您的产品必须具有以 PDF 文件形式提供的 EULA。您必须提供指向 Amazon S3 存储桶的链接，客户可以在您的产品 AWS Marketplace 页面上查看 EULA。
   + 产品注册 URL – 这是买家在 AWS Marketplace中成功订阅您的产品后被重定向的 URL。
   + 有关产品的元数据 – 您在 AWS Marketplace 管理门户的产品创建向导中提供元数据。
   + 产品的支持信息-此信息包括电子邮件地址和 URLs 产品支持渠道。

1. **提交您的产品进行集成**

   使用您的卖家账户 AWS Marketplace 和管理门户[在上创建初始 SaaS 产品页面 AWS Marketplace](saas-create-product-page.md)。 AWS Marketplace 会将您的产品作为限量产品发布，这意味着它只能用于集成和测试。您的产品代码和 Amazon EventBridge 事件配置将在产品概述页面上提供。
**注意**  
您的商品必须保持较低的价格，这样您和 AWS Marketplace 卖家运营团队就可以在不产生高额成本的情况下测试您的商品。当您请求公开产品时，我们会要求您提供产品的实际价格。

1. **与集成 AWS Marketplace**

   您的产品必须支持客户载入和使用您的产品，包括在向他们提供访问权限之前验证他们的订阅，在某些情况下，还要计量他们的用量。您的集成方式 AWS Marketplace 取决于您为产品使用的优惠类型。有关集成的更多信息（基于优惠类型），请参阅以下主题：
   + [订阅集成](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-integrate-subscription.html)
   + [合同集成](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-integrate-contract.html)
   + [ pay-as-you-go集成合同](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-integrate-contract-with-pay.html)

   将您的产品与集成的最后一步 AWS Marketplace 是对其进行测试，以确保集成工作正常。

1. **产品测试和合同取消**

   完成集成过程后，我们建议您订阅自己的产品以评估和确认客户体验。通过创建测试订阅，您可以：
   + 查看产品信息
   + 检查可用的购买选项
   + 处理测试付款
   + 验证指向您自己的产品网站的链接
**重要**  
按照取消 [SaaS pay-as-you-go 订阅中的说明取消您的订阅，然后再将产品的知名度从限定](https://docs.aws.amazon.com/marketplace/latest/buyerguide/cancel-subscription.html#cancel-saas-subscription)更改为公开。要取消合同，请[提交支持工单](https://aws.amazon.com/marketplace/management/contact-us/)，联系 AWS Marketplace 卖家运营团队。

1. **提交您的产品以供发布**

   验证集成并准备好让产品上线后，选择**更新可见性**。 AWS Marketplace 卖家运营团队将审查您的产品并更新价格，然后才能将可见性更新为公开。
**注意**  
AWS Marketplace 卖家运营部门使用手动流程来验证和更新 SaaS 产品。将可见性更改为公开状态的过程需要 7-10 个工作日，如果团队发现错误，则需要更长时间。有关时间的更多信息，请参阅本指南中的[时间和预期](https://docs.aws.amazon.com/marketplace/latest/userguide/product-submission.html#timing-and-expectations)。

# 在上创建初始 SaaS 产品页面 AWS Marketplace
<a name="saas-create-product-page"></a>

您可以使用，使用软件即服务 (SaaS) 应用程序元数据在 AWS Marketplace 目录中创建初始 SaaS 产品页面 AWS Marketplace 管理门户。然后，您可以添加产品信息、产品部署详细信息和公开优惠详细信息。您可以选择将账户添加到允许列表中以测试产品。有关更多信息，请参阅以下步骤。

**要创建初始 SaaS 产品页面，请执行以下操作：**

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

1. 选择**创建 SaaS 产品**，然后选择 **SaaS 产品**。

1. 生成 SaaS 产品 ID 和代码。您也可以添加可选标签以支持基于标签的授权。
**注意**  
有关基于标签的授权的信息，请参阅《*AWS Identity and Access Management 用户指南》*中的[使用标签控制对 AWS 资源的访问权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)。

1. 使用自助服务体验创建 AWS Marketplace 房源。添加产品信息、产品部署详细信息和公开优惠详情。或者，您可以将账户添加到允许列表中以测试产品。
**注意**  
如果您需要在完成步骤之前结束会话，请选择**保存并退出**选项，将您当前的选择保存到暂存区域。此选项会创建验证您提供的信息的请求。验证您的请求期间，您无法编辑产品。如果您的请求成功，则可以通过选择**恢复产品创建**来继续创建产品。  
如果您的请求失败，则是由于验证错误所致，该错误可在产品请求日志中看到。选择查看错误的请求，然后从**操作**下选择**复制到新的**来更正错误，然后重新提交请求。要更新之前的步骤，请打开产品详细信息页面并提交更改请求。
**注意**  
对于使用非免费定价模式（合同、使用或带消费的合同）的产品，在测试期间，您的价格将默认为每个维度 0.001 美元。这个价格允许您在**受限**状态下测试您的产品，而不会产生大笔账单。对于使用免费定价模式的商品，尺寸将默认为 0.00 美元。对于非免费定价模式，您将在公开产品时提供实际价格。请注意，如果所有尺寸都设置为 0.00 美元，则产品将自动转换为免费定价模式。

1. 选择**提交**。然后， AWS Marketplace 验证信息。如果验证成功，则以 “**受限**” 状态 AWS Marketplace 发布产品。验证成功后，您可以预览、集成和测试您的产品。
**注意**  
验证过程中，您无法编辑产品。当您的商品最初发布 AWS 账户 时，只有创建商品的用户和 AWS Marketplace 卖家运营团队的测试账户才能访问该商品。如果您从 **SaaS 产品页面查看产品**，则可以选择**查看开启 AWS Marketplace**以查看产品详情，因为它们将显示在 AWS Marketplace 买家面前。其他 AWS Marketplace 用户看不到此详细信息列表。

# 在中配置 SaaS 产品设置 AWS Marketplace
<a name="saas-product-settings"></a>

在中[创建软件即服务 (SaaS) 产品](saas-create-product.md)后 AWS Marketplace，您可以修改许多产品设置。以下各节介绍了如何提交更改请求和修改产品设置，例如更新定价详情、产品可见性和其他设置。

**Topics**
+ [管理更改请求](#create-change-request)
+ [更新产品信息](#update-product-information)
+ [更新架构细节](#updating-architecture-details)
+ [更新允许名单 AWS 账户 IDs](#update-allowlist)
+ [更新产品知名度](#saas-update-visibility)
+ [更新定价条款](#saas-update-pricing-terms)
+ [添加定价维度](#saas-add-pricing-dimensions)
+ [更新定价维度](#saas-update-dimension)
+ [限制定价维度](#restrict-pricing-dimensions)
+ [确定买家将如何访问您的产品](#configure-product-access)
+ [配置快速启动](#saas-quick-launch)
+ [按国家/地区更新可用性](#saas-availability-by-country)
+ [更新产品的退款政策](#update-refund-policy)
+ [更新最终用户许可协议 (EULA)](#saas-update-eula)

## 管理更改请求
<a name="create-change-request"></a>

在[自助服务列表](saas-create-product.md#saas-creating-self-service)中，您可以使用*更改请求*对产品进行更改。您当前的请求可以在[**请求**选项卡 AWS Marketplace 管理门户](https://aws.amazon.com/marketplace/management/requests)上找到。您可以通过导航栏下方的**请求更改**下拉列表提出新的请求。

**要为 SaaS 产品创建更改请求，请执行以下操作：**

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

1. 在**产品**选项卡中，从下拉列表中选择 **SaaS**。

1. 提交请求后，就会开始处理。变更请求将处于以下状态：**审核中**、**正在准备更改**和**正在应用更改**。

1. 请求的处理完成后，其状态将更改为以下值之一：
   + **成功** - 此状态表示您请求的更改已处理并且更改已反映在系统中。
   + **失败** - 此状态表示请求出现点问题，更改未得到处理。如果状态为**失败**，您可以选择请求以查找**错误代码**，这些错误代码提供了有关如何更正问题的建议。您可以对错误进行故障排除，并创建新的更改请求。为了加快处理速度，您可以使用**复制到新请求**功能来复制**失败**请求的详细信息。您可以进行必要的更改并重新提交请求。

以更新开头的更改请求将加载项目的当前详细信息。然后，您可以进行更新，从而覆盖现有的详细信息。添加和限制请求对专门用于在每次请求成功后预置的更新（在自助服务体验中选择**保存并退出**和**提交**操作之后）。也就是说，现有订阅用户可以继续使用该产品，直到他们的订阅或合同到期。但是，不能向处于**受限**状态的产品添加新的订阅用户。

## 更新产品信息
<a name="update-product-information"></a>

创建产品后，您可能需要在 AWS Marketplace中更改与其关联的信息。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。

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

1. 更新以下任何您想要更改的字段：
   + **产品标题**
   + **SKU**
   + **简短描述**
   + **详细描述**
   + **产品徽标 URL**
   + **要点**
   + **产品类别**
   + **关键词**
   + **产品视频 URL**
   + **资源**
   + **支持信息**
**注意**  
有关徽标格式的详细信息，请参阅[公司和产品徽标要求](https://docs.aws.amazon.com/marketplace/latest/userguide/product-submission.html#seller-and-product-logos)。

1. 要更新产品信息，请选择**提交**。

1. 验证请求是否显示在**请求**选项卡上，状态为**正在审核**。您可能需要刷新页面才能看到您的新请求。

## 更新架构细节
<a name="updating-architecture-details"></a>

要获得部署产品的特殊名称，请通过选择托管模式并上传架构图，在 AWS Marketplace 管理门户 (AMMP) 中更新产品的架构详细信息。 AWS有关 AWS 考虑在上部署的主机模式列表 AWS，请参阅[指南要求](saas-guidelines.md#march-saas-guidelines)。

**更新架构细节**

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

1. 在**产品**菜单上，选择 **SaaS**。

1. 在 **SaaS 产品**表中，选择您的产品。

1. 对于**请求更改**，选择**更新架构细节**。

1. 选择一种托管模式。如果您选择的托管模式 AWS Marketplace 认为已在上部署 AWS，请完成以下两个额外步骤。有关考虑部署的模式的更多信息 AWS[指南要求](saas-guidelines.md#march-saas-guidelines)，请参阅本指南前面的。

   1. 根据提示，在**架构图**部分选择**选择文件**，以 PNG 或 JPG 格式上传架构图。有关架构图的更多信息，请参阅[创建架构图](saas-guidelines.md#arch-diagram)。

   1. 根据提示，在**应用平面**中选择应用的运行位置。有关更多信息，请参阅[控制平面与应用平面](https://docs.aws.amazon.com//whitepapers/latest/saas-architecture-fundamentals/control-plane-vs.-application-plane.html)。

1. 选择**更新架构细节**。

请求完成后，**请求状态**将更改为**成功**。要查看请求状态，请在 **SaaS 产品**表中选择您的产品，然后选择**请求日志**选项卡。

要查看评估结果，请在 **SaaS 产品**表中选择您的产品，然后选择**架构细节**选项卡。

## 更新允许名单 AWS 账户 IDs
<a name="update-allowlist"></a>

您可以更改可以在 AWS 账户 IDs 受限状态下查看您的产品的列表。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新允许列表**。列表显示了当前 AWS 账户 IDs已列入许可名单的。

1. 在 “**允许名单 AWS 账户**” 字段中，输入 AWS 账户 IDs 并使用逗号分隔它们。

1. 要更新允许名单 AWS 账户 IDs，请选择**提交**。

## 更新产品知名度
<a name="saas-update-visibility"></a>

要更改哪些买家可以查看您的快速启动体验 AWS Marketplace，您可以使用 “**更新” 可见性**。

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

1. 在 [SaaS 产品](https://console.aws.amazon.com/marketplace/latest/userguide/saas-guidelines.html)页面上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新可见性**。
**注意**  
您可以使用此更改请求请求将产品从**受限**态更改为**公开**状态。但是，变更请求必须经过 AWS Marketplace 卖家运营团队的批准才能移至**公开**。

1. 当您向公众发布时，你需要提供产品的实际价格。此价格将在您的列表获得公开批准后应用。

1. 要提交请求以供审核，请选择**提交**。

1. 确认**请求**选项卡将**请求状态**显示为**正在审核**。请求完成后，状态变为**成功**。

## 更新定价条款
<a name="saas-update-pricing-terms"></a>

要更改 SaaS 产品的每个维度的定价，可以使用**更新定价条款**。

**注意**  
任何维度的定价上调都将导致定价更新选项至少在接下来的 90 天内不可用。如果同时更新降价和上调，请先更新降价。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新公开优惠**，然后选择**更新定价条款**。

1. 当前定价已在字段中预先填写。您可以删除当前价格，然后添加新价格。

1. 要提交请求以供审核，请选择**提交**。

1. 确认**请求**选项卡将**请求状态**显示为**正在审核**。请求完成后，状态将更新为**成功**或**失败**。

## 添加定价维度
<a name="saas-add-pricing-dimensions"></a>

您可以添加要用于向产品收费的维度。维度是买家在使用您的产品时需要支付的基本计量单位。

**注意**  
要更新现有定价维度的名称或描述，请参阅[更新定价维度](#saas-update-dimension)。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新定价维度**，然后选择**添加定价维度**。

1. 提供维度 API 标识符、显示名称和描述以向您的产品添加新维度，然后选择**下一步**。
**注意**  
API 标识符与名称在所有维度中必须唯一。维度创建后，您无法更改 API 标识符与单位。

1. 为您添加的每个维度定义价格，然后选择**下一步**以查看您的更改。
**注意**  
您只能为为产品选择的定价模型添加维度（例如，合同、使用量、含消费的合同或免费）。对于使用非免费定价模式的限量产品，新增尺寸的价格设置为0.01美元。对于使用免费定价模式的商品，新添加的尺寸必须设置为 0.00 美元。对于非免费定价模式，您可以在产品准备好公开时更新价格。如果所有尺寸都设置为 0.00 美元，则产品将自动转换为免费定价模式。

1. 选择**提交**，提交您的请求以供审核。

1. 在**请求**选项卡中，验证请求状态是否为**正在审核**。在请求完成后，状态将更改为**成功**。

## 更新定价维度
<a name="saas-update-dimension"></a>

您可以更新要用于向产品收费的维度。维度是买家在使用您的产品时需要支付的基本计量单位。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新定价维度**，然后选择**更新维度信息**。

1. 找到要更新的维度，然后选择名称或描述。

1. 提供新的名称或描述，然后选中**复选标记**以确认更新。维度名称必须唯一。

1. 选择**提交**，提交您的请求以供审核。

1. 在**请求**选项卡中，验证请求状态是否为**正在审核**。在请求完成后，状态将更改为**成功**。

## 限制定价维度
<a name="restrict-pricing-dimensions"></a>

您可以限制产品中当前列出的维度。此请求会将所选维度从产品中删除。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新定价维度**，然后选择**限制定价维度**。

1. 对于受限及公开产品，系统会提示您使用**[联系我们](https://aws.amazon.com/marketplace/management/contact-us/)**按钮联系 AWS Marketplace 卖家运营团队。使用此表单提供要从产品列表中删除维度的详细信息。
**注意**  
运营团队未必总能限制定价维度。

## 确定买家将如何访问您的产品
<a name="configure-product-access"></a>

您可以选择以下选项之一，作为买家访问您产品的方式：
+ [更新 SaaS URL 交付选项](#update-fulfillment-options) – 客户使用站点的 URL，他们在 AWS Marketplace中订阅您的产品后，会被重定向到该站点。
+ [配置快速启动](#saas-quick-launch) – 客户使用简化的流程来配置和启动您的产品。您可以为具有“受限”或“公开”可见性的现有产品完成此配置。

### 更新 SaaS URL 交付选项
<a name="update-fulfillment-options"></a>

要更新用于交付 SaaS 产品的 URL，请使用**更新交付选项**选项卡。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新交付选项**，然后选择**编辑默认的交付 URL**。

1. 在**交付 URL** 字段中，输入 SaaS 产品交付选项的新 URL。

1. 要提交请求以供审核，请选择**提交**。

1. 确认**请求**选项卡将**请求状态**显示为**正在审核**。请求完成后，状态将更新为**成功**或**失败**。

## 配置快速启动
<a name="saas-quick-launch"></a>

中列出的 SaaS 产品 AWS Marketplace 通常需要在订阅购买者的账户中部署 AWS 资源（例如，IAM 角色）。Quick Launch 允许您使用 CloudFormation 模板为买家提供指导、 step-by-step说明和资源部署。买家使用 CloudFormation 模板来配置和发布产品。要了解有关快速启动配置过程的更多信息，请参阅[启用 SaaS 快速启动](https://catalog.workshops.aws/mpseller/en-US/saas/quick-launch-integration)实验室。

要配置客户可用于启动您的 SaaS 产品的快速启动体验，请使用**交付选项**选项卡。

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。
**注意**  
要配置快速启动体验，产品必须具有“受限”或“公开”可见性。

1. 在产品详细信息页面上，选择**交付选项**选项卡。

1. 对于**快速启动**，请选择**激活并配置**按钮。

1. 有关**账户登录详细信息**，请提供买家可以登录或创建账户的站点 URL。此 URL 将在买家体验中打开一个新的标签页。然后，买家登录或创建一个账户，然后返回 AWS Marketplace 以启动模板。

1. 创建 CloudFormation 模板。
**提示**  
创建用于 AWS CloudFormation 将资源部署到买家 AWS 账户的模板时，请按照 Well-Architected Framework 进行操作。 AWS 如需更多信息和资源，请访问 [AWS Well-Architected](https://aws.amazon.com/architecture/well-architected/) 并阅读 [AWS Well-Architected Framework](https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html)。

   对于 **CloudFormation 模板**，选择**添加 CloudFormation 模板**按钮并提供以下信息：
   + **标题**-提供 CloudFormation 部署的名称。
   + **描述** – 提供模板的描述。
   + **堆栈名称** – 提供堆栈的名称。此名称是中买方的堆栈名称 CloudFormation。
   + **CloudFormation 模板 URL** — 提供 Amazon 简单存储服务将审核此模板。
**注意**  
为了简化客户的启动过程，我们建议尽量减少与配置过程相关的模板数量。理想情况下，您需要一个模板来部署使用产品所需的资源。有关 CloudFormation 模板的问题，请联系您的 AWS Marketplace 业务发展合作伙伴或[AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。
   + **所需的 IAM 权限**-提供部署 CloudFormation 模板所需的权限。如果您想共享部署参数（这些参数作为密钥存储在 [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 中，以供买家使用），您的策略必须包含以下操作：
     + `secretsManager:ListSecrets`
     + `secretsManager:DescribeSecret`
     + `secretsManager:ReplicateSecretToRegions`
     + `secretsManager:GetSecretValue`
**注意**  
如果您的产品需要卖家提供的 CloudFormation 部署参数（例如 API 密钥和[外部](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html)参数 IDs），请使用该`PutDeploymentParameter`操作与您的客户共享该参数。有关更多信息，请参阅《AWS Marketplace 部署服务 API 参考》**中的 [https://docs.aws.amazon.com/marketplace-deployment/latest/api-reference/API_PutDeploymentParameter.html](https://docs.aws.amazon.com/marketplace-deployment/latest/api-reference/API_PutDeploymentParameter.html)。

1. （可选）有关**手动配置说明**，请为想要手动配置产品的买家提供说明。考虑包含产品入门指南和文档的链接。

1. 有关**发布详情，请**提供 CloudFormation 堆栈部署后买家访问产品的 URL。

1. （可选）**对于快速启动的允许名单账户**，请提供一个以逗号分隔的列表 AWS 账户 ，这些账户可以在有限的可见性下查看快速启动体验。

1. 选择**提交**按钮。快速启动体验的可见性状态将为“受限”，这意味着只有您的账户和列入许可名单的账户才能看见。在“受限”可见性下，您可以在订阅产品并选择**设置账户**按钮后，使用**配置和启动**页面测试您的配置。
   + 要从买家的角度预览页面，请选择**预览**。当两个页面都处于打开状态时，您的配置更改将反映在预览中。

1. 准备就绪后，可以在 AWS Marketplace 目录中发布快速启动体验。在产品详细信息页面上，使用**交付选项**选项卡上的**更新快速启动可见性**按钮。

   当您将可见性更改为 “公开” 时， AWS Marketplace 卖家运营团队将审查配置、进行买家测试并发布体验。
**注意**  
如果您在启用快速启动体验时需要支持，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。

## 按国家/地区更新可用性
<a name="saas-availability-by-country"></a>

您可以定义提供产品的国家/地区。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新公开优惠**，然后选择**按国家/地区更新可用性**。

1. 请选择以下选项之一：
   + 所有国家/地区 – 适用于所有受支持的国家/地区。
   + 所有国家/地区（部分除外） – 在所有受支持的国家/地区均可用，部分国家/地区除外。
   + 仅加入允许列表的国家/地区 – 提供产品的国家/地区的具体列表。

1. 选择**提交**，提交您的请求以供审核。

1. 在**请求**选项卡中，验证请求状态是否为**正在审核**。在请求完成后，状态将更改为**成功**。

## 更新产品的退款政策
<a name="update-refund-policy"></a>

您可以使用**更新退款政策**来更新产品的退款政策。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)页面的 **SaaS 产品**选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新公开优惠**，然后选择**更新退款政策**。

1. 文本框中提供了当前退款政策的详细信息。根据需要查看和修改详细信息。提交请求会改写当前的退款政策。

1. 要提交请求以供审核，请选择**提交**。

1. 确认**请求**选项卡将**请求状态**显示为**正在审核**。请求完成后，状态将更新为**成功**或**失败**。

## 更新最终用户许可协议 (EULA)
<a name="saas-update-eula"></a>

您可以为订阅您的产品的新用户更新您的 EULA。

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

1. 在 [SaaS 产品](https://aws.amazon.com/marketplace/management/products/saas)选项卡上，选择要修改的产品。

1. 从**请求更改**下拉列表中，选择**更新公开优惠**，然后选择**更新 EULA**。

1. 您可以选择 [AWS Marketplace (SCMP) 的标准合同](https://docs.aws.amazon.com/marketplace/latest/userguide/standardized-license-terms.html)，也可以提交自定义 EULA。对于自定义 EULA，您必须提供合同的 Amazon Simple Storage Service (Amazon S3) 网址。您的 Amazon S3 存储桶必须可公开访问。

1. 选择**提交**，提交您的请求以供审核。

1. 在**请求**选项卡中，验证请求状态是否为**正在审核**。在请求完成后，状态将更改为**成功**。

# 将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace
<a name="saas-integrate-subscription"></a>

**2026 年 6 月 1 日，新 SaaS 产品的集成要求发生变化**  
AWS Marketplace 正在推出对并发协议的支持，允许在同一协议期限内使用单个 AWS 账户多次购买同一产品。从 2026 年 6 月 1 日起，所有新的 SaaS 产品都必须支持更新的集成要求。[查看并发协议的新集成](https://catalog.workshops.aws/mpseller/en-US/saas/integration-for-concurrent-agreements)。

将您的产品与集成 AWS Marketplace 仅一步之遥[在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。要将您的软件即服务 (SaaS) 订阅产品与集成 AWS Marketplace，您必须编写代码并证明它可以成功响应多种客户场景。以下各节介绍如何将 SaaS 订阅模式与集成 AWS Marketplace。

**重要**  
本指南适用于 *Pay-As-You-Go (PAYG)* SaaS 产品。如果您正在实施*基于合同*的 SaaS 产品，请改为参考[将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)。PAYG 产品不使用授权 SNS 主题或 API。 GetEntitlements 

**注意**  
在开始之前，请确保您已为自己的 software-as-a-service（SaaS）产品选择了正确的定价模式 AWS Marketplace。有关更多信息，请参阅 [规划您的 SaaS 产品](saas-prepare.md)。

**Topics**
+ [场景：您的服务验证新客户](#saas-subscription-validate-customer)
+ [场景：计量用量](#saas-subscription-meter-usage)
+ [场景：监控用户订阅的更改](#saas-subscription-monitor-changes)
+ [场景：验证客户订阅](#saas-subscription-verify-subscriptions)
+ [测试您的 SaaS 订阅产品集成](#saas-subscription-integration-testing)

## 场景：您的服务验证新客户
<a name="saas-subscription-validate-customer"></a>

当客户订阅您的产品时，他们会被重定向到您的注册 URL，这是一个带有临时 `x-amzn-marketplace-token` 令牌的 HTTP POST 请求。通过下列方式来响应此请求：

1. `ProductCode`通过调用中的 `[ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)` API 操作将令牌兑换`CustomerAWSAccountId``LicenseArn`、、和 AWS Marketplace Metering Service。`CustomerIdentifier`

1. 在系统中保留`CustomerIdentifier``CustomerAWSAccountId``LicenseArn`、、和`ProductCode`，以备将来调用。您必须存储客户是否拥有有效的订阅，以及您需要的有关该客户的任何信息。

1. 作为对请求的响应，您必须展示用户的首次使用体验（如果适用于您的服务）。

## 场景：计量用量
<a name="saas-subscription-meter-usage"></a>

当客户开始使用您的服务时，您必须每小时发送一次计量记录。有关如何计量的详细信息，请参阅[配置 SaaS 订阅用量的计量](metering-for-usage.md)。

我们建议您使用 AWS CloudTrail 监控活动，以确保账单信息已发送至 AWS。在发送计量记录时，请记住以下几点：
+ 将按小时去除重复的计量请求。
+ 每小时发送的记录是累积的。
+ 即使过去一小时内没有记录，我们也强烈建议实施最佳实操，即每小时发送一次计量记录（用量为 0）。

## 场景：监控用户订阅的更改
<a name="saas-subscription-monitor-changes"></a>

设置 Amazon Simple Queue Service (Amazon SQS) 队列，并订阅您的产品的 Amazon SNS 主题。您的 SNS 主题信息包含在您创建商品时从 AWS Marketplace 卖家运营团队收到的电子邮件中。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。订阅 SNS 主题后，您将收到有关客户订阅变更的通知，包括为特定客户提供或撤消访问权限。

**注意**  
Amazon SNS 主题 Amazon 资源名称 (ARN) 与 `arn:aws:sns:us-east-1:<account id>:aws-mp-subscription-notification-<product code>` 类似。

您必须响应的通知有：
+ `subscribe-success` – 客户已订阅，您可以成功地根据他们的客户 ID 进行计量。
+ `unsubscribe-pending` – 客户正在取消订阅。您应该发送所有最后的计量记录。
+ `unsubscribe-success` – 客户已取消订阅。将不再接受客户的计量记录。执行您关闭客户资源的实操，遵守您的保留策略。
+ `subscribe-fail` – 客户订阅失败。您不应根据他们的客户 ID 进行计量或代表客户创建资源。

## 场景：验证客户订阅
<a name="saas-subscription-verify-subscriptions"></a>

在代表客户创建资源之前，请确认客户应该有权访问您的产品。存储您通过 Amazon SQS 收到的通知中客户的最新状态，以了解客户是否有权访问。

## 测试您的 SaaS 订阅产品集成
<a name="saas-subscription-integration-testing"></a>

将 SaaS 订阅产品与集成后 AWS Marketplace，必须进行深入测试以确保集成成功。以下过程概述了验证产品集成的步骤。

**注意**  
使用您自己的账户订阅您的产品并测试集成是否成功。可以暂时降低价格，以便您能够测试购买流程，而不会在这些账户中产生较高的费用。有关暂时降低价格或允许其他测试账户访问您的产品的更多信息，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。  
产品推出后，该服务必须继续对新客户的这些情形做出响应。

1. 使用允许的账户通过订阅产品来测试客户体验。

1. 使用允许的账户进行订阅后，请确保该账户被重定向到注册 URL，并且重定向是一个包含临时令牌的 POST 请求。请确保您的应用程序保留客户 ID，以备将来调用。这测试了[场景：您的服务验证新客户](#saas-subscription-validate-customer)中的一部分。

1. 在上一步中验证测试账户后，将该账户注册到应用程序中。例如，您可以让测试客户填写表单来创建新的用户。或者，向这些客户提供其他后续步骤以获取对 SaaS 应用程序的访问权限。这测试了[场景：您的服务验证新客户](#saas-subscription-validate-customer)中的一部分。

1. 测试客户入职后，使用中的 `BatchMeterUsage` API 操作提出请求，将计量记录发送到以 AWS 用于计费。 AWS Marketplace Metering Service这测试了[场景：计量用量](#saas-subscription-meter-usage)。

1. 测试订阅变更。可能的情况包括取消订阅、成功订阅和订阅失败。这测试了[场景：监控用户订阅的更改](#saas-subscription-monitor-changes)。

1. 确认订阅成功。在收到测试账户的 Amazon SNS 通知以及成功订阅消息后，可以开始计量。 AWS Marketplace Metering Service 在您收到 Amazon SNS 通知之前发送到的记录不会被计量。这测试了[场景：验证客户订阅](#saas-subscription-verify-subscriptions)。
**注意**  
为了防止出现计费问题，我们强烈建议您以编程方式等待此通知，然后代表您的客户启动资源。

1. 完成所有集成要求并测试解决方案后，请通知 AWS Marketplace 卖家运营团队。他们将通过验证您是否已使用 `BatchMeterUsage` API 操作成功发送计量数据，来对解决方案运行一系列的最终测试。

集成和测试完成后，您可以进行最终审核并将您的产品公之于众 AWS Marketplace。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。

# 将你的 SaaS 合同产品与 AWS Marketplace
<a name="saas-integrate-contract"></a>

**2026 年 6 月 1 日，新 SaaS 产品的集成要求发生变化**  
AWS Marketplace 正在推出对并发协议的支持，允许在同一协议期限内使用单个 AWS 账户多次购买同一产品。从 2026 年 6 月 1 日起，所有新的 SaaS 产品都必须支持更新的集成要求。[查看并发协议的新集成](https://catalog.workshops.aws/mpseller/en-US/saas/integration-for-concurrent-agreements)。

将您的软件即服务 (SaaS) 合同产品与集成 AWS Marketplace 是第一步[在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。要将您的软件即服务 (SaaS) 合同产品与集成 AWS Marketplace，您必须编写代码并证明它可以成功响应多种客户场景。以下各部分描述了这些场景，讲解了如何应对这些场景，并概述了测试集成的情况。

**注意**  
在开始之前，请确保您已为 AWS Marketplace中的软件即服务 (SaaS) 产品选择正确的定价模式。有关更多信息，请参阅 [规划您的 SaaS 产品](saas-prepare.md)。

**Topics**
+ [场景：您的服务验证新客户](#saas-contract-validate-customer)
+ [场景：您的服务处理客户请求](#saas-contract-customer-requests)
+ [场景：监控用户订阅的更改](#saas-contract-monitor-changes)
+ [测试您的 SaaS 合同产品集成](#saas-contract-integration-testing)

## 场景：您的服务验证新客户
<a name="saas-contract-validate-customer"></a>

当客户订阅您的产品时，他们会被重定向到您的注册 URL，这是一个带有临时 `x-amzn-marketplace-token` 令牌的 HTTP POST 请求。通过下列方式来响应此请求：

1. `ProductCode`通过调用中的 `[ ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)` API 操作将令牌兑换`CustomerAWSAccountId``LicenseArn`、、和 AWS Marketplace Metering Service**。`CustomerIdentifier`

1. 通过调用 AWS Marketplace Entitlement Service中的 `[ GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)` API 操作来验证客户可以访问的订阅和数量（如适用）。

1. 在系统中保留`CustomerIdentifier``CustomerAWSAccountId``LicenseArn`、、和`ProductCode`，以备将来调用。存储客户是否拥有有效的订阅，以及您需要的有关该客户的任何信息。

1. 作为对请求的响应，您必须展示用户的首次使用体验（如果适用于您的服务）。

## 场景：您的服务处理客户请求
<a name="saas-contract-customer-requests"></a>

当客户向您的服务提出请求时，您必须通过适当的操作或消息来响应以下情形：
+ 他们在系统中没有客户 ID。这表明他们尚未订阅。您应该告知用户如何订阅。
+ 他们有客户 ID，且 `GetEntitlements` API 操作返回了相应的权利。在这种情况下，您应该满足请求。
+ 他们确实有客户 ID，但是 `GetEntitlements` API 操作未返回任何权利，或者返回的数量不足以满足请求。在这种情况下，您必须确定如何处理访问权限和管理他们的体验。

## 场景：监控用户订阅的更改
<a name="saas-contract-monitor-changes"></a>

**重要**  
S AWS Marketplace aaS 产品的 SNS 通知已被亚马逊 EventBridge 通知所取代。如果您已将现有的 SaaS 产品与 SNS 集成，它们将继续运行。新上架商品最终将过渡到使用Amazon EventBridge 而不是SNS。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

设置亚马逊简单队列服务 (Amazon SQS) Simple Queue SQUEE 队列作为您的 EventBridge 亚马逊规则的目标，以接收有关客户权利变更的事件。您的 Amazon EventBridge 事件配置是在您创建产品时提供的。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。通过配置 Amazon EventBridge 规则，您会收到有关客户权利变更的事件，包括为特定客户提供或撤销访问权限。

您必须响应的唯一通知是：
+ 许可证已更新 Amazon EventBridge 事件 — 客户权利已更改，您必须调用 `GetEntitlements` API 操作才能查看新状态。更新您的客户商店，如果适用（例如，客户的合同已失效），请执行关闭客户资源的实操，遵守您的保留策略。

**注意**  
有关更多信息，请参阅 [使用检查权利 AWS Marketplace Entitlement Service](checking-entitlements.md)。

## 测试您的 SaaS 合同产品集成
<a name="saas-contract-integration-testing"></a>

将 SaaS 合同产品与集成后 AWS Marketplace，必须进行深入测试以确保集成成功。以下过程概述了验证产品集成的步骤。

**注意**  
使用您自己的账户订阅您的产品并测试集成是否成功。可以暂时降低价格，以便您能够测试购买流程，而不会在这些账户中产生较高的费用。有关暂时降低价格或允许其他测试账户访问您的产品的更多信息，请[联系我们](https://aws.amazon.com/marketplace/management/contact-us/)。  
产品推出后，该服务必须继续对新客户的这些情形做出响应。

1. 使用允许的账户通过获取产品合同来测试客户体验。

1. 在该账户获得合同后，请确保它被重定向到注册 URL，并且重定向是一个包含临时令牌的 POST 请求。确保您的应用程序保留客户 ID 以备将来调用之用，并正确处理客户拥有的权利。这测试了[场景：您的服务验证新客户](#saas-contract-validate-customer)中的一部分。

1. 在上一步中验证测试账户后，将该账户注册到应用程序中。例如，您可以让测试客户填写表单来创建新的用户。或者，向这些客户提供其他后续步骤以获取对 SaaS 应用程序的访问权限。这测试了[场景：您的服务验证新客户](#saas-contract-validate-customer)中的一部分。

1. 如果 `GetEntitlements` API 操作未返回任何权利，无论是在载入期间还是验证通过期间，您的应用程序都必须正确管理未授权用户的访问权限和体验。这测试了[场景：您的服务处理客户请求](#saas-contract-customer-requests)。

1. 测试订阅变更。验证您的应用程序是否正确处理取消订阅、成功订阅和订阅失败的情况。这测试了[场景：监控用户订阅的更改](#saas-contract-monitor-changes)。

1. 完成所有集成要求并测试解决方案后，请通知 AWS Marketplace 运营团队。然后，他们将通过验证您是否已成功调用 `GetEntitlements` API 操作并充分载入新客户来测试解决方案。

集成和测试完成后，您可以进行最终审核并将您的产品公之于众 AWS Marketplace。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。您也可以通过填写退款申请表来取消测试订阅。有关取消订阅的更多信息，请参阅[申请账单调整（退款）](refunds.md#refund-process)。

# 将基于合同的 SaaS 产品与 AWS Marketplace
<a name="saas-integrate-contract-with-pay"></a>

**2026 年 6 月 1 日，新 SaaS 产品的集成要求发生变化**  
AWS Marketplace 正在推出对并发协议的支持，允许在同一协议期限内使用单个 AWS 账户多次购买同一产品。从 2026 年 6 月 1 日起，所有新的 SaaS 产品都必须支持更新的集成要求。[查看并发协议的新集成](https://catalog.workshops.aws/mpseller/en-US/saas/integration-for-concurrent-agreements)。

将您的产品与集成 AWS Marketplace 仅一步之遥[在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。要将您的软件即服务 (SaaS) 合同产品与集成 AWS Marketplace，您必须编写代码并证明它可以成功响应多种客户场景。以下各部分描述了这些场景，讲解了如何应对这些场景，并概述了测试集成的情况。

**注意**  
本指南仅适用于*基于合同*的 SaaS 产品。如果您正在实施 *Pay-As-You-Go （即收现付）S* aaS 产品，请[将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)改用。PAYG 产品不使用授权 SNS 主题或 API。 GetEntitlements   
在开始之前，请确保您已为 AWS Marketplace中的软件即服务 (SaaS) 产品选择正确的定价模式。有关更多信息，请参阅 [规划您的 SaaS 产品](saas-prepare.md)。

**Topics**
+ [场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)
+ [场景：您的服务处理客户请求](#saas-contract-with-pay-customer-requests)
+ [场景：计量用量](#saas-contract-with-pay-meter-usage)
+ [场景：监控用户权利的变化](#saas-contract-with-pay-monitor-changes)
+ [通过集成测试你的 SaaS pay-as-you-go 合同](#saas-contract-consumption-integration-testing)

## 场景：您的服务验证新客户
<a name="saas-contract-with-pay-validate-customer"></a>

当客户订阅您的产品时，他们会被重定向到您的注册 URL，这是一个带有临时 `x-amzn-marketplace-token` 令牌的 HTTP POST 请求。通过下列方式来响应此请求：

1. `ProductCode`通过调用中的 `[ ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)` API 操作将令牌兑换`CustomerAWSAccountId``LicenseArn`、、和 AWS Marketplace Metering Service。`CustomerIdentifier`

1. 通过调用 AWS Marketplace Entitlement Service中的 `[ GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)` 操作来验证客户可以访问的订阅和数量（如适用）。

1. 在系统中保留`CustomerIdentifier``CustomerAWSAccountId``LicenseArn`、、和`ProductCode`，以备将来调用。存储客户是否拥有有效的订阅，以及您需要的有关该客户的任何信息。

1. 作为对请求的响应，您必须展示用户的首次使用体验（如果适用于您的服务）。

## 场景：您的服务处理客户请求
<a name="saas-contract-with-pay-customer-requests"></a>

当客户向您的服务提出请求时，您必须通过适当的操作或消息来响应以下情形：
+ 他们在系统中没有客户 ID。这表明他们尚未订阅。您应该给他们发送消息，描述如何订阅。
+ 他们有客户 ID，且 `GetEntitlements` API 操作返回了相应的权利。在这种情况下，您应该满足请求。
+ 他们确实有客户 ID，但是 `GetEntitlements` API 操作未返回任何权利，或者返回的数量不足以满足请求。在这种情况下，您必须确定如何处理访问权限和管理他们的体验。

## 场景：计量用量
<a name="saas-contract-with-pay-meter-usage"></a>

当客户开始使用您的服务时，您必须每小时发送一次计量记录。有关如何计量的详细信息，请参阅[配置 SaaS 订阅用量的计量](metering-for-usage.md)。

我们建议您使用 AWS CloudTrail 监控活动，以确保账单信息已发送至 AWS。在发送计量记录时，请记住以下几点：
+ 将按小时去除重复的计量请求。
+ 每小时发送的记录是累积的。
+ 即使过去一小时内没有记录，我们也强烈建议实施最佳实操，即每小时发送一次计量记录（用量为 0）。

## 场景：监控用户权利的变化
<a name="saas-contract-with-pay-monitor-changes"></a>

设置 Amazon Simple Queue Service (Amazon SQS) 队列，并订阅您产品的 Amazon SNS 主题，有两个 SNS 主题，一个用于权利变更，另一个用于订阅变更。您的主题信息包含在您创建商品时从 AWS Marketplace 卖家运营团队收到的电子邮件中。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。订阅 SNS 主题后，您将收到有关客户订阅变更的通知，包括为特定客户提供或撤消访问权限。

**注意**  
订阅变更的 SNS 主题 Amazon 资源名称 (ARN) 与 `arn:aws:sns:us-east-1:<account id>:aws-mp-subscription-notification-<product code>` 类似。权利变更的 SNS 主题 ARN 与 `arn:aws:sns:us-east-1:<account id>:aws-mp-entitlement-notification-<product code>` 类似。

您必须响应的通知如下：
+ `entitlement-updated`（在权利 SNS 主题中）– 客户权利已更改，您必须调用 `GetEntitlements` API 操作才能查看新状态。更新您的客户商店，如果适用（例如，客户的合同已失效），请执行关闭客户资源的实操，遵守您的保留策略。
+ `subscribe-success`（在订阅 SNS 主题中）– 客户已订阅，您可以成功地根据他们的客户 ID 进行计量。
+ `unsubscribe-pending`（在订阅 SNS 主题中）– 客户正在取消订阅。您应该发送所有最后的计量记录。
+ `unsubscribe-success`（在订阅 SNS 主题中）– 客户已取消订阅。将不再接受客户的计量记录。执行您关闭客户资源的实操，遵守您的保留策略。
+ `subscribe-fail`（在订阅 SNS 主题中）– 客户订阅失败。您不应根据他们的客户 ID 进行计量或代表客户启用资源。

**注意**  
有关更多信息，请参阅 [使用检查权利 AWS Marketplace Entitlement Service](checking-entitlements.md)。

## 通过集成测试你的 SaaS pay-as-you-go 合同
<a name="saas-contract-consumption-integration-testing"></a>

将合同与 pay-as-you-go产品整合后 AWS Marketplace，必须进行深入测试，以确保集成成功。以下过程概述了验证产品集成的步骤。

**注意**  
使用您自己的账户订阅您的产品并测试集成是否成功。可以暂时降低价格，以便您能够测试购买流程，而不会在这些账户中产生较高的费用。有关暂时降低价格或允许其他测试账户访问您的产品的更多信息，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。  
产品推出后，该服务必须继续对新客户的这些情形做出响应。

1. 使用允许的账户通过获取产品合同来测试客户体验。

1. 在该账户获得合同后，请确保它被重定向到注册 URL，并且重定向是一个包含临时令牌的 POST 请求。确保您的应用程序保留客户 ID 以备将来调用之用，并正确处理客户拥有的权利。这测试了[场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)中的一部分。

1. 在上一步中验证测试账户后，将该账户注册到应用程序中。例如，您可以让测试客户填写表单来创建新的用户。或者，向这些客户提供其他后续步骤以获取对 SaaS 应用程序的访问权限。这测试了[场景：您的服务验证新客户](#saas-contract-with-pay-validate-customer)中的一部分。

1. 如果 `GetEntitlements` API 操作未返回任何权利，无论是在载入期间还是验证通过期间，您的应用程序都必须正确管理未授权用户的访问权限和体验。这测试了[场景：您的服务处理客户请求](#saas-contract-with-pay-customer-requests)。

1. 测试客户入职后，使用中的 `BatchMeterUsage` API 操作提出请求，将计量记录发送到以 AWS 用于计费。 AWS Marketplace Metering Service这测试了[场景：计量用量](#saas-contract-with-pay-meter-usage)。

1. 测试订阅变更。验证您的应用程序是否正确处理取消订阅、成功订阅和订阅失败的情况。这测试了[场景：监控用户权利的变化](#saas-contract-with-pay-monitor-changes)。

1. 完成所有集成要求并测试解决方案后，请通知 AWS Marketplace 卖家运营团队。然后，他们将通过验证您是否已成功调用 `GetEntitlements` API 操作并充分载入新客户来测试解决方案。他们还将验证您是否已通过 `BatchMeterUsage` API 操作成功发送计量记录。

集成和测试完成后，您可以进行最终审核并将您的产品公之于众 AWS Marketplace。有关更多信息，请参阅 [在中创建 SaaS 产品 AWS Marketplace](saas-create-product.md)。

# 部署无服务器 SaaS 集成
<a name="deploy-serverless-saas"></a>

当您拥有需要与 AWS Marketplace 集成的 SaaS 解决方案时，可采用多种架构方案实现集成。

为帮助您理解 SaaS 集成概念，AWS 提供了一个参考实验室，演示了一种使用无服务器架构的方法。

访问参考实验室：[将 SaaS 与无服务器 SaaS 集成参考集成](https://aws.amazon.com/quickstart/architecture/aws-marketplace-saas/)

**注意**  
本参考实施仅供学习和演示之用，尚未达到生产环境使用标准，切勿直接在生产环境中部署。在生产环境中实施类似解决方案之前，需确保能够满足您具体用例对应的安全性、可扩展性、监控及合规性要求。

# 规划您的 SaaS 产品
<a name="saas-prepare"></a>

在向中添加软件即服务 (SaaS) 产品之前 AWS Marketplace，必须先进行一些规划。要让您的产品获得成功，这一步是至关重要的。缺少规划可能会导致计费问题，也可能导致您需要在 AWS Marketplace中重新创建您的产品。以下几节介绍了如何规划 SaaS 产品。

**重要**  
您产品的大多数设置一经配置便无法更改。如果您需要在中创建产品后对其进行更改 AWS Marketplace，则可能需要使用正确的设置创建新产品。

**Topics**
+ [规划您的定价](#plan-pricing)
+ [规划您的账单集成](#saas-plan-integration)
+ [规划您的 Amazon SNS 集成](#saas-plan-sns)
+ [规划客户访问您的产品的方式](#saas-plan-customer-access)

## 规划您的定价
<a name="plan-pricing"></a>

上的 SaaS 产品有三种定价模式 AWS Marketplace。为您的产品选择正确的定价模式将是进行产品规划时要做出的最重要的决定。选择错误的定价模式可能会耽误数周时间。定价模式决定了您客户的支付选项以及您需要编写、测试和部署的账单集成代码。有关不同类型定价模式的信息，请参阅 [SaaS 产品定价](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-pricing-models.html)。

**注意**  
所有 SaaS 定价模式都支持免费试用。有关更多信息，请参阅 [SaaS 免费试用](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-free-trials.html)。

## 规划您的账单集成
<a name="saas-plan-integration"></a>

开启 SaaS 产品的好处之一 AWS Marketplace 是整合账单。要利用此好处，您必须与 AWS Marketplace Metering Service 或 AWS Marketplace Entitlement Service集成，具体取决于您选择的定价模式。这两项服务有助于确保您的账单和用量报告准确无误。

在规划集成后，您必须先测试与产品的集成，然后再推出产品。有关集成和测试的更多信息，请参阅 [访问 AWS Marketplace 计量和授权服务 APIs](saas-integration-metering-and-entitlement-apis.md)。

## 规划您的 Amazon SNS 集成
<a name="saas-plan-sns"></a>

您可以为 SaaS 产品订阅两个 Amazon Simple Notiﬁcation Service (Amazon SNS) 主题。有关更多信息，请参阅 [SaaS 通知](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-notification.html)。这些消息可以帮助您以编程方式处理由客户发起 AWS 或由客户发起的订阅和合同的更改。Amazon SNS 通知可以是程序化触发器，使客户能够在您的产品注册网站上注册新账户。他们还可以拒绝订阅已过期的客户访问您的产品。您可以选择客户接收通知的方式，具体取决于您如何对这些通知的处理进行编程。

## 规划客户访问您的产品的方式
<a name="saas-plan-customer-access"></a>

此部分介绍如何使您的产品可供买家访问。

### 规划 SaaS 产品注册网站
<a name="saas-plan-registration"></a>

购买 SaaS 产品的客户需要具有对该产品的访问权限。您必须规划和实施希望客户访问产品的方式。SaaS 产品支持以下访问选项：
+ 快速启动
+ AWS PrivateLink
+ 您自己的产品网站

要使用您的注册网站验证 AWS Marketplace 客户，请参阅 [SaaS 客户入门](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-product-customer-setup.html)。

#### 使用“快速启动”以便客户访问您的产品
<a name="plan-saas-quick-launch"></a>

使用“快速启动”部署选项可以减少买家配置、部署和启动产品所需的时间和资源。“快速启动”可减少买家在此过程中必须访问的站点数量。有关更多信息，请参阅[配置快速启动](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-product-settings.html#saas-quick-launch)。

#### AWS PrivateLink 用于让客户访问您的 SaaS 产品
<a name="saas-plan-privatelink"></a>

您可以使用 [使用亚马逊 VPC 配送您的商品 AWS PrivateLink](privatelink.md) 将您的服务配置为 Amazon Virtual Private Cloud (Amazon VPC) 端点服务。您的客户可以创建一个 VPC 端点并跨 AWS 云 虚拟网络访问您的软件。或者，可以通过您拥有和维护的网站向在 Internet 上创建连接的客户提供对您的软件产品的访问权限。

#### 使用您自己的网站
<a name="saas-plan-website"></a>

 SaaS 产品托管于您的环境中，必须通过您管理和维护的公共端点（如网站）在 Internet 上访问它。通常，您有一个网站，客户可以使用该网站注册您的产品、登录以使用该产品以及访问对该产品的支持。

# 适用于 SaaS 的产品指南 AWS Marketplace
<a name="saas-guidelines"></a>

AWS Marketplace 为所有软件即服务 (SaaS) 产品和产品维护以下指南， AWS Marketplace 以便为我们的客户推广安全、可靠和值得信赖的平台。以下各节提供了 SaaS 产品的指南 AWS Marketplace。

所有产品及其相关元数据在提交时都要经过审核，以确保它们符合或超过当前 AWS Marketplace 指南。将审核并调整这些准则，以满足我们不断变化的安全要求。此外， AWS Marketplace 持续审查商品，以验证它们是否符合这些指南的任何更改。如果产品不符合要求，我们可能会要求您更新您的产品，在某些情况下，您的产品可能暂时无法供新的订户进行订阅，直到问题得到解决。

**Topics**
+ [产品设置准则](#saas-guidelines-setup)
+ [客户信息要求](#saas-customer-information)
+ [产品使用准则](#saas-product-usage)
+ [架构指南](#saas-architecture)

## 产品设置准则
<a name="saas-guidelines-setup"></a>

所有 SaaS 产品都必须遵循以下产品设置准则：
+ 定价范围不能仅限于私人优惠。买家应该能够订阅公开产品的任何定价维度。
+ 定价维度必须满足以下要求：
  + 对于使用免费定价模式的商品，所有定价维度必须设置为 0.00 美元。
  + 对于使用其他定价模式（合同、使用或含消费的合同）的产品，至少一个定价维度的价格必须高于 0.00 美元。如果所有尺寸都设置为 0.00 美元，则产品将自动转换为免费定价模式。
+ 所有定价维度都必须与实际软件相关，不得包括与该软件无关的任何其他产品或服务。
+ 仅在这些 AWS GovCloud (US) 地区提供的 SaaS 产品必须在产品标题中包含`GovCloud`某处。

## 客户信息要求
<a name="saas-customer-information"></a>

所有 SaaS 产品必须遵循以下客户信息要求：
+ SaaS 产品必须完全通过 AWS Marketplace上列出的维度计费。
+ 您不得在任何时候收集您的 SaaS 产品的客户付款信息，包括信用卡和银行账户信息。
+ SaaS 注册页面必须包含用于输入买家电子邮件地址的字段。您还可以包含其他字段，例如：
  + Name
  + 邮政编码
  + Phone number（电话号码）
  + 公司信息
  + 产品设置首选项

  如果您计划使用多种语言，则必须提供注册页面的英语视图。

## 产品使用准则
<a name="saas-product-usage"></a>

所有 SaaS 产品都必须遵循以下产品使用准则：
+ 在中订阅产品后 AWS Marketplace，客户应该能够在您的 SaaS 应用程序中创建帐户并获得对 Web 控制台的访问权限。如果客户无法立即获得应用程序的访问权限，您必须提供一条消息，其中包含有关客户何时获得访问权限的特定说明。创建账户后，必须向客户发送通知，确认其账户已创建，并提供明确的后续步骤。
+ 如果客户已在 SaaS 应用程序中拥有账户，则他们必须能够从配送登录页面登录。
+ 客户必须能够在 SaaS 应用程序中查看其订阅状态，包括任何相关合同或订阅使用信息。
+ 客户必须能够轻松获得有关使用应用程序、故障排除和申请退款（如果适用）等问题的帮助。必须在交付登录页面上指定支持联系选项。
+ 产品软件和元数据不得包含将用户重定向到 AWS Marketplace中未提供的其他云平台、其他产品、追加服务或免费试用优惠的语言。

  有关 SaaS 产品免费试用的信息，请参阅[在中创建 SaaS 免费试用优惠 AWS Marketplace](saas-free-trials.md)。
+ 如果您的产品是其他产品或其他 ISV 产品的附加组件，则您的产品描述必须表明它扩展了其他产品的功能，如果没有它，产品的应用将受到限制。例如，*本产品扩展了 <product name> 的功能，如果没有它，则该产品的应用将受到限制。请注意，<product name> 可能需要自己的许可才能使用此列表的全部功能。*

## 架构指南
<a name="saas-architecture"></a>

以下主题列出并描述了 SaaS 产品的架构指南。

**Topics**
+ [指南要求](#march-saas-guidelines)
+ [创建架构图](#arch-diagram)

### 指南要求
<a name="march-saas-guidelines"></a>

**注意**  
以下准则自 2025 年 5 月 1 日起生效。
+ 您可以发布所有 SaaS 架构。
+ 部署在上的产品会在 AWS Marketplace 搜索结果及其产品详细信息页面中 AWS 获得特殊名称。 AWS Marketplace 要将您的产品视为 “已部署” AWS，您的产品必须完全在上面运行 AWS。这包括应用平面和控制平面。

  *应用程序平面*可以在卖家账户和买家 AWS 账户中运行，也可以同时在两者中运行。 AWS 有关更多信息，请参阅[控制平面与应用平面](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/control-plane-vs.-application-plane.html)白皮书。

  产品用于传输、存储或处理应用程序数据的第三方服务（内容交付网络 (CDNs)、域名系统 () 和企业身份提供商 (DNSs) 除外IdPs）也必须完全运行。 AWS
**注意**  
*应用数据*是指属于买家或为买家生成的数据。

  产品用于安全、监控、数据复制或迁移的代理或网关可以在买方拥有的外部 AWS环境（包括本地）上运行，但只能将数据发送到以 AWS 进行存储和分析。

  您必须附上架构图以供审核，您不能将逻辑示意图公开。有关更多信息，请参阅下一部分“[创建架构图](#arch-diagram)”。
+ 卖家可以发布不完全在 AWS上运行的产品。
+ 需要买家基础设施中资源的应用必须遵循以下准则：
  + 要被视为 SaaS 产品而不是托管服务，您的控制平面（如 Sa [aS 架构基础 AWS 白皮书中所定义）必须位于您管理的基础架构](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/saas-architecture-fundamentals.html)中。有关更多信息，请参阅 [SaaS 与托管服务提供商](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/saas-vs.-managed-service-provider-msp.html)白皮书。
  + 在产品描述中，您必须通知客户，如果他们产生与 AWS Marketplace 交易分开的 AWS 基础设施费用，则他们必须支付这些费用。
  + 您必须以安全的方式配置资源，例如使用 AWS 安全令牌服务 (AWS STS) 或 AWS 身份和访问管理 (IAM)。
  + 在创建向应用授予权限的使用说明或部署模板时，必须遵循[最低权限原则](https://docs.aws.amazon.com/IAM/latest/UserGuide/LeastPrivilege.html)。
  + 您必须提供额外的文档，介绍所有预置的 AWS 服务、IAM 策略声明以及 IAM 角色或用户在客户账户中的部署和使用方式。
  + 您必须提供说明或部署模板，使买家能够在其 AWS 账户中部署所需资源。
  + 如果您提供了用于向买家 AWS 账户部署资源的 CloudFormation 模板 (CFTs)，则他们必须遵守相关[AWS Marketplace 政策 CFTs](https://docs.aws.amazon.com/marketplace/latest/userguide/cloudformation.html#aws-cloudformation-template-preparation)。您必须按照 CFTs 为买家启用 SaaS [快速启动部署选项时提供的方法将其作为 SaaS](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-product-settings.html#saas-quick-launch) 列表的一部分发布。SaaS 快速启动使您的买家可以更轻松地配置您的 SaaS 解决方案。
  + 如果将亚马逊系统映像 (AMI) 部署到买家的 AWS 账户，则该映像必须符合[基于 AMI 的产品要求 AWS Marketplace](product-and-ami-policies.md)。您必须在中将 AMI 作为单独的基于 AMI 的产品发布， AWS Marketplace 并按照中的要求表明它是附加产品。[产品使用策略](product-and-ami-policies.md#product-usage)您可以将基于 AMI 的产品定价为 BYOL，因为它是您的 SaaS 产品的扩展。 AWS Marketplace 扫描基于 AMI 的产品中是否存在未修补的常见漏洞和漏洞 (CVEs) 以及安全要求。您的买家还必须先订阅您的基于 AMI 的产品，然后再进行部署。
  + 如果将容器镜像部署到买家的 AWS 账户中，则必须符合[基于容器的产品要求 AWS Marketplace](container-product-policies.md)。您必须在中将容器映像作为单独的基于容器的产品发布， AWS Marketplace 并按照中的要求注明它是附加产品。[产品使用要求](container-product-policies.md#container-usage-requirements)您可以将基于容器的产品按照 BYOL 进行定价，因为它是您的 SaaS 产品的扩展。 AWS Marketplace 扫描基于容器的产品中是否存在未修补的常见漏洞和漏洞 () CVEs 以及安全要求。您的买家还必须先订阅您的基于容器的产品，然后再进行部署。
+ 成功调用注册为提供商并提交 SaaS 发布请求的。 AWS Marketplace APIs AWS 账户 SaaS 定价模型决定了 APIs 应该调用哪个：
  + SaaS 合同 — [GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)在 AWS Marketplace Entitlement Service.
  + SaaS 与消费签订合同 — [GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)在 AWS Marketplace 计量服务[BatchMeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_BatchMeterUsage.html)中 AWS Marketplace Entitlement Service 和中。
  + SaaS 订阅 — [BatchMeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_BatchMeterUsage.html)在 AWS Marketplace 计量服务中。
+ 仅在这些 AWS GovCloud (US) 地区提供的 SaaS 产品必须解释其他 AWS GovCloud (US) 地区 AWS 区域 和区域之间的架构边界、该产品的用例以及不建议用于该产品的工作负载。

有关 SaaS 架构的更多信息，请参阅 [SaaS 架构基础知识](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/saas-architecture-fundamentals.html) AWS 白皮书。

### 创建架构图
<a name="arch-diagram"></a>

要获得部署产品的特殊名称 AWS，请在 AWS Marketplace 管理门户中[更新产品的架构详细信息](saas-product-settings.md#updating-architecture-details)。选择部署在上的托管模式， AWS 然后上传架构图进行 AWS 审查。有关 AWS Marketplace 考虑在上部署的托管模式 AWS，请参阅[指南要求](#march-saas-guidelines)上一节中的。如果您的托管模式发生变化，则必须更新产品的架构细节。

**注意**  
您无法公开您的逻辑示意图。
您可以发布不完全在 AWS上运行的产品。

在创建架构图时，请使用以下标准：
+ 将组件分组并标记为[应用平面或控制平面](https://docs.aws.amazon.com/whitepapers/latest/saas-architecture-fundamentals/control-plane-vs.-application-plane.html)的一部分。
+ 对于产品核心业务逻辑之 AWS 外的任何组件，请将它们与应用程序平面分组。
+ 组件可以表示低级细节（例如，计算实例和网络子网），也可以表示高级服务（例如，数据分析平台）。
+ 组件不需要标识所使用的 AWS 服务或非AWS 服务的名称。
+ 将组件放置在其逻辑运行位置。例如，在卖家的 AWS 账户、买家的 AWS 账户、卖家的非AWS 环境或其他环境中。
+ 对于数据复制或工作负载迁移产品，应包含所有支持的源环境和目标环境。

**注意**  
您用于更新 SaaS 产品架构细节的架构图不会发布，也不会向买家公开。

#### 细节层次
<a name="example-diagrams"></a>

您可以创建宏观架构图，用以展示主要系统组件、包括基本数据流并重点介绍应用平面和控制平面服务。或者，您也可以创建一个低级别的详细架构图，用以分解每个组件、显示具体的连接，并包括具有不同细节层次的技术规格。

下面的架构图都展示了一个假设的视频分析 SaaS 应用的架构。每个图的细节层次不同。两者都是可以接受的。您可以它们为例，了解要在自己的架构图中加入怎样的细节层次。

以下是宏观架构图示例。

![\[一个假设的视频分析 SaaS 应用的架构图，宏观展示了相关服务。这些服务包括机器学习、存储、Web 和计费服务，它们被分组并标记为控制平面和应用平面的一部分。\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/images/example-architecture-diagram-with-high-level-services.png)


以下是低级别的详细架构图示例。

![\[一个假设的视频分析 SaaS 应用的架构图，详细展示了相关细节。详细信息包括虚拟私有云 (VPC) 和 Amazon A SageMaker I 的 AWS 服务图标，这些图标被分组并标记为控制平面和应用程序平面的一部分。 AWS Fargate\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/images/example-architecture-diagram-with-low-level-details.png)


有关更多信息，请参阅[什么是架构绘图？](https://aws.amazon.com/what-is/architecture-diagramming/)。创建架构图后，请在 AWS Marketplace Management Portal（AMMP）中更新您的架构细节。有关更多信息，请参阅 [更新架构细节](saas-product-settings.md#updating-architecture-details)。

# SaaS 产品定价在 AWS Marketplace
<a name="saas-pricing-models"></a>

买家购买您的软件即服务 (SaaS) 产品后 AWS Marketplace，会向您 AWS Marketplace 提供他们的账单标识符。您可以使用账单标识符来调用 AWS Marketplace Entitlement Service 和 AWS Marketplace Metering Service。然后，客户可以在您的 AWS 环境中或通过您创建的虚拟私有云 (VPC) 终端节点连接访问该产品。本主题提供了 SaaS 定价模型的列表 AWS Marketplace。

**注意**  
所有 SaaS 定价模式都支持免费试用。有关更多信息，请参阅 [SaaS 免费试用](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-free-trials.html)。


**SaaS 定价模式**  

| 定价模式 | 说明 | 
| --- | --- | 
| SaaS 订阅 | 一种 pay-as-you-go模式，我们向买家收取每小时使用您的 SaaS 产品的费用。有关更多信息，请参阅 [SaaS 订阅定价](saas-subscriptions.md)。 | 
| SaaS 合同 | 您可以提前向买家收取软件使用费用，也可以为他们提供一个灵活的付款计划。客户还可以为其合同范围之外的额外使用付费。有关更多信息，请参阅 [SaaS 合同定价](saas-contracts.md)。 | 
| 与 SaaS 签订合同 pay-as-you-go |  您可以提前向买家收取软件使用费用，也可以为他们提供一个灵活的付款计划。除合同价格外，还针对额外用量按计量费率向买家收取费用。有关更多信息，请参阅 [SaaS 合同定价](saas-contracts.md)。 | 
| SaaS 免费 | 一种免费定价模式，客户可以免费使用您的 SaaS 产品。所有定价维度必须设置为 0.00 美元。 | 

**注意**  
创建列表并进行有限发布后，便无法更改定价模式。

要在上线您的 SaaS 产品 AWS Marketplace，请决定是要提供 [SaaS 订阅定价模式](saas-subscriptions.md)还是 [SaaS 合同定价模式](saas-contracts.md)。

# SaaS 订阅定价
<a name="saas-subscriptions"></a>

对于软件即服务 (SaaS) 订阅，请根据您发送给我们的计量记录向您的客户开具 AWS Marketplace 账单。必须通过客户的账户中部署的软件每小时测量和报告一次所有费用。然后，所有使用量均按月计算，并使用与基于 AMI AWS Marketplace 的产品相同的机制按月计费。我们对客户的产品用量收费的功能取决于是否从您收到计量记录。您有责任确保已成功发送并收到您的产品的计量记录。

必须先执行以下操作，然后才能发布采用订阅定价的 SaaS 产品：

1. 在中创建新的 SaaS 产品 AWS Marketplace 管理门户，选择 “**新建 SaaS 订阅**”。

1. 使用必要信息填写**常规**选项卡中的字段。记下产品代码。

1. 在**定价**选项卡的**设置定价**下，选择最准确描述产品定价的**类别**。定价类别会显示在 AWS Marketplace 网站上。您可以选择**带宽** (GBps、 MBps)、**数据**（GB、MB、TB）、**主机**（小时）、**请求**或**用户**（小时）。如果所有预定义的类别均无法满足您的需求，您可以选择更通用的**单位**类别。

   接下来，定义您的定价维度。每个定价维度均表示一项特征或服务，可以为其设置每单位价格。维度的示例包括用户、扫描的主机和接收日志的 GB。您最多可以定义 200 个维度。对于您定义的每个维度，您必须添加以下信息：
   + **维度 API 名称** – 将计量记录发送到 [AWS Marketplace Metering Service](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/Welcome.html) 时使用的 API 名称。此名称指示客户使用的维度。此名称会显示在账单报告中。由于您是唯一有权访问您的报告的人员，因此该名称无需是读者友好的名称。名称一旦设置便无法更改。
   + **维度描述** - 面向客户的声明，用于描述产品的维度。描述不能超过 70 个字符，并且应便于用户理解。描述示例：管理员每小时和预置的每 Mbps 带宽。在发布产品后，您将无法更改该描述。
   + **维度费率** - 该产品每小时每 FCP 单位的软件费用（美元）。该字段支持八个小数位数。

## 在 SaaS 订阅结束时
<a name="saas-subscription-ends"></a>

**重要**  
S AWS Marketplace aaS 产品的 SNS 通知已被亚马逊 EventBridge 通知所取代。如果您已将现有的 SaaS 产品与 SNS 集成，它们将继续运行。新上架商品最终将改用亚马逊 EventBridge 代替 SNS。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

 客户可以通过 AWS 管理控制台从 SaaS 订阅产品取消订阅。SaaS 订阅结束流程的要点包括以下几点：

1. 您的默认 Amazon EventBridge 巴士将收到该买家的购买协议终止事件。

1.  您有一个小时来计量客户的任何剩余用量。

1. 此小时后，您将收到许可证已取消配置-制造商活动。此时，您不再能够发送此客户的计量记录。

 您可以决定您希望如何在您的 SaaS 产品中为取消订阅的客户禁用功能。例如，您的产品可能要完成客户的现有工作，但要防止客户创建工作。您可能希望向客户显示一条消息，告知对方已禁止其使用。买家可以通过重新订阅您的产品。 AWS Marketplace

## 当 SaaS 订阅被取消时
<a name="saas-subscription-cancellations"></a>

SaaS 订阅取消流程的要点包括以下几点：

1. 客户可以在 AWS Marketplace 网站的 Your **Marketplace 软件页面上取消对您的** SaaS 订阅产品的订阅。

   您的默认 Amazon EventBridge 巴士将收到该买家的购买协议终止事件。

1.  您有一个小时来计量客户的任何剩余用量。

1. 您从产品中通知客户正在取消。如果客户表示他们希望通过您的产品进行取消，请将客户定向到 AWS Marketplace。为了保证将来不会收取任何费用，客户应向确认取消。 AWS Marketplace

# SaaS 合同定价
<a name="saas-contracts"></a>

SaaS 合同允许客户通过预先协议购买您的软件。根据该协议，客户有权在指定数量内使用您的SaaS产品。您可以定义使用类别、维度和合同期限。 AWS Marketplace 提前或按您定义的付款时间表向客户开具账单。对于合同之外的额外使用情况，您的软件将通过 AWS Marketplace Metering Service (AWS Marketplace Metering Service) 报告使用情况。

使用 SaaS 合同定价模式时，您的应用程序从不发送计量记录，相反，它通过调用 AWS Marketplace Entitlement Service (AWS Marketplace Entitlement Service) 来验证权利。 AWS Marketplace 将这些权利传达给您的 SaaS 应用程序。

## 创建 SaaS 合同产品
<a name="creating-saas-contract-product"></a>

在发布采用合同定价的 SaaS 产品之前，您必须先执行以下操作：

1. 在中创建新的 SaaS 产品 AWS Marketplace 管理门户，然后选择**新的 SaaS 合同**。

1. 使用必要信息填写**常规**选项卡中的字段。记下产品代码。

1. 在**定价**选项卡上：

   1. 在 “**套装定价**” 中，选择您要为客户提供的**合同期限**。您可以为每个合同期限输入不同的价格。您可以选择以下一个或多个选项：**每月**、**1 年**、**2 年**和 **3 年**。如果您要创建专属优惠，则可以选择以月为单位的自定义期限（最多 60 个月）。

   1. 对于**选择想要提供的合同类型**，从以下选项中选择您希望客户购买您的产品的方式：
      +  **买家可以选择提供的一个或多个选项** – 客户可以为您提供的每个定价维度选择一个数量。
      +  **买家只能从提供的多个套餐中选择一个套餐** – 客户可以从包含不同特征、服务和用量组合的选项中选择一个套餐。

   1.  选择最能准确描述您的产品定价的用量单位类别。定价类别会显示在 AWS Marketplace 网站上。您可以选择**带宽** (GBps、 MBps)、**数据**（GB、MB、TB）、**主机**（小时）、**请求**或**用户**（小时）。如果所有预定义的类别均无法满足您的需求，您可以选择更通用的**单位**类别。

1. 定义您的定价维度。每个维度代表您想要单独定价的功能或服务。有关定价维度和必填字段的详细信息，请参阅[了解 SaaS 合同定价维度](#understanding-saas-contract-pricing-dimensions)。

## 了解 SaaS 合同定价维度
<a name="understanding-saas-contract-pricing-dimensions"></a>

每个定价维度均表示一项功能或服务，可以为其设置每单位价格。维度的示例为用户、扫描的主机和接收日志的 GB。对于您定义的每个维度，您可以添加一个名称、描述、价格和 API 名称。将向客户显示名称、价格和描述。您可以使用 API 名称进行跟踪和报告， AWS Marketplace 如下所示：
+ 在调用 [AWS Marketplace Entitlement Service](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/Welcome.html) 检索客户已购买的维度时。
+ 在调用 [AWS Marketplace Metering Service](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/Welcome.html) 指示客户使用的维度时。

对于合同中的每个定价维度，可以选择让客户针对其合同范围之外的其他维度用量现用现付。您也可以在没有合同价格的情况下添加其他维度，而客户只需现用现付。

在使用该向导为 SaaS 产品创建合同时，您必须为定价维度定义以下字段：

**维度 API 名称**  
调用授权 API 时使用的名称。此名称在账单报告中可见，并且报告不是面向外部的。API 名称的长度上限是 15 个字符。名称一旦设置便无法更改。

**维度显示名称**  
面向客户的维度名称。此名称将帮助客户了解产品的维度。名称应是用户友好的，最大长度为 24 个字符。可以更改此值。

**维度描述**  
面向客户的维度描述，提供有关产品维度的更多信息。描述的最大长度为 70 个字符。

**维度-每月价格**  
对于此维度的 1 个月期权，软件按单位收费。该字段支持三个小数位数。

**尺寸-1 年价格**  
对于此维度 12 个月的选项，软件按单位收费。该字段支持三个小数位数。这不是每月费用。价格必须反映 12 个月的一次性收费价格。

**尺寸-2 年价格**  
对于此维度 24 个月的选项，软件按单位收费。该字段支持三个小数位数。

**尺寸-3 年价格**  
对于此维度 36 个月的选项，软件按单位收费。该字段支持三个小数位数。


**示例：数据存储应用程序**  

|   | 每月价格  | 12 个月价格  | 24 个月价格  | Pay-as-you-go 额外使用的价格  | 
| --- | --- | --- | --- | --- | 
|  未加密的数据 (GB)  |  1.50 美元/GB  |  16.00 美元/GB  |  30.00 美元/GB  |  每小时 0.1 美元/GB  | 
|  加密的数据 (GB)  |  1.55 美元/GB  |  16.60 美元/GB  |  31.20 美元/GB  |  每小时 0.11 美元/GB  | 


**示例：日志监控产品**  

|   | 每月价格  | 12 个月价格  | Pay-as-you-go 额外使用的价格  | 
| --- | --- | --- | --- | 
|  基本（监控 10 台主机，监控 5 个容器）  |  100 USD  |  1000 美元  |   | 
|  标准（监控 20 台主机，监控 10 个容器）  |  \$1200  |  2000 美元  |   | 
|  专业（监控 40 台主机，监控 20 个容器）  |  400 美元  |  4000 美元  |   | 
|  额外主机的每小时监控成本  |   |   |  0.1 美元  | 
|  额外容器的每小时监控成本  |   |   |  0.2 美元  | 

**注意**  
价格可以采用以下期限：1 个月、12 个月、24 个月或 36 个月。可以选择为产品提供这些选项中的一个或多个选项。期限对于每个维度都必须相同。例如，假设您有 `ReadOnlyUsers` 和 `AdminUsers` 维度。如果您为 `ReadOnlyUsers` 提供按年定价，则还必须为 `AdminUsers` 提供年度价格。

## SaaS 合同升级
<a name="upgrades"></a>

 客户可以将合同升级到更高值之一（更长期限除外）。例如，他们可以升级到更高数量或值更高的权限。将向客户提供现有合同的按比例分配的信用额。客户无法减小其现有合同的规模。他们只能在续订时减小规模或取消其续订。

 权限由您的 SaaS 产品验证，该产品调用 AWS Marketplace Entitlement Service。

## 自动续订
<a name="automatic-renewals"></a>

 当客户 AWS Marketplace 使用SaaS合同购买您的产品时，他们可以同意自动续订合同条款。客户继续按每月或按 1 年、2 年或 3 年期限支付权限费用。客户始终具有修改续订设置的选项。他们可以取消续订或按不同的数量和期限续订合同。

## 在 SaaS 合同终止时
<a name="saas-contract-ends"></a>

SaaS 合同产品具有合同到期日期。在合同终止时，会发生以下事件：

1.  您的 SaaS 产品会收到一条 `entitlement-updated` 通知，表明买家的权利已更改。 AWS Marketplace Entitlement Service 返回一个空的响应。

1.  您有 1 小时来计量客户的任何剩余用量。之后，您不再能够发送此客户的计量记录。

## 当 SaaS 合同被取消时
<a name="saas-contract-cancellations"></a>

SaaS 合同取消流程的要点包括以下几点：

1. 客户可以通过 AWS 支持请求取消和 SaaS 合同产品退款。

   客户必须在 48 小时内申请退款 AWS 支持。

   全额退款或按比例退款通常在 3–5 个工作日内发放。

1. 您的 SaaS 产品会通过亚马逊 EventBridge 活动收到该客户的通知。

1. 对于任何额外的使用费，您有一小时的时间向客户发送最终计量记录。

1. 您从产品中通知客户正在取消。如果客户表示他们希望通过您的产品进行取消，请将客户定向到 AWS Marketplace。为了保证将来不会收取任何费用，客户应向确认取消。 AWS Marketplace

# 在中创建 SaaS 免费试用优惠 AWS Marketplace
<a name="saas-free-trials"></a>

作为 AWS Marketplace 卖家，您可以在 (AMMP) 中创建软件即服务 (SaaS) 免费试用优惠。 AWS Marketplace 管理门户 客户可以使用 SaaS 免费试用选项在做出重大购买决策之前评估软件产品。客户订阅您的产品后，您的产品会像对付费客户一样执行权利检查。

每个 SaaS 产品 AWS 账户 只能免费试用一次。免费试用期间授予的免费使用金额不会在 AWS 组织中的关联账户之间共享。单个主付款人账户中的不同关联账户可以创建自己的个人免费试用。

**注意**  
如果您使用卖家数据传送服务（SDDS），您将在 Amazon Simple Storage Service 存储桶中收到[协议详情试用报告](https://docs.aws.amazon.com/marketplace/latest/userguide/supplementary-reports.html)。该报告包括协议详细信息，例如订阅用户名称和 ID、优惠 ID 以及协议开始和结束日期。
卖家还会在创建新订阅时收到 [Amazon Simple Notification Service（Amazon SNS）通知](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-notification.html)。Amazon SNS 通知中包含一个用于标识免费试用协议的 `isFreeTrialTermPresent` 标志。
此外，订阅免费试用的客户会被重定向到您的注册 URL，并附带一个额外的令牌 `x-amzn-marketplace-offer-type=free-trial`。您可以使用该信息为使用免费试用的客户创造独特的注册体验。

## 创建 SaaS 免费试用优惠
<a name="creating-saas-free-trial"></a>

卖家可以在 AWS Marketplace 管理门户 (AMMP) 中创建 SaaS 免费试用优惠。

**要创建 SaaS 免费试用优惠，请执行以下操作：**

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

1. 在上 AWS Marketplace 管理门户，选择以下任一选项：
   + **创建或管理优惠**
   + **优惠**选项卡

1. 在**优惠**页面上，选择**公开免费试用**选项卡，查看所有 SaaS 免费试用。

1. 选择**创建免费试用优惠**。卖家可以为每个公开 SaaS 产品创建一个 SaaS 免费试用优惠。

1. 对于**优惠基础知识**，选择您的**产品**，然后选择**下一步**。

1. 在**免费试用设置**中：

   1. 输入**免费试用期（天）**。

      免费试用的期限为 7–90 天。

   1. 查看您现有公开优惠中的**产品维度**。

      您无法更改 SaaS 订阅免费试用的产品维度。

      您可以为 SaaS 合同免费试用更改每个维度的数量限制，并**删除**或**添加维度**。

1. 查看**服务协议**。

   对于 EULA 版本，您可以选择 ** AWS Marketplace标准合同**或**自定义 EULA**，然后选择**查看优惠**。

1. 验证并查看优惠的所有信息，然后选择**创建优惠**。

## 取消 SaaS 免费试用优惠
<a name="cancelling-saas-free-trial"></a>

卖家可以随时通过 AWS Marketplace 管理门户取消免费试用优惠。

要取消 SaaS 免费试用优惠，请执行以下操作：

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

1. 在上 AWS Marketplace 管理门户，选择以下任一选项：
   + **创建或管理优惠**
   + **优惠**选项卡

1. 在**优惠**页面上，选择优惠价。

1. 选择**查看优惠**。

1. 选择**取消优惠**。

取消优惠价后，此优惠的有效协议将一直有效，直至到期。无法为已取消的优惠价创建新协议。

# 通过以下方式吸引客户使用您的 SaaS 产品 AWS Marketplace
<a name="saas-product-customer-setup"></a>

 通过软件即服务 (SaaS) 订阅和 SaaS 合同，您的客户可以通过您的环境订阅您的产品， AWS Marketplace 但在您的 AWS 环境中访问产品。订阅产品后，您的客户会被定向到您作为 SaaS 产品的一部分创建和管理的网站，以注册其账户和配置产品。

创建您的 SaaS 产品列表时，您需要提供指向注册登录页面 URL。在客户订阅后，我们使用该 URL 将客户重定向到您的注册登录页面。在软件的注册登录页面上，您可以收集为客户创建账户所需的信息。如果您打算通过电子邮件与客户联系以获得使用情况通知，我们建议您收集客户的电子邮件地址。

注册登录页面必须能够识别并接受表单数据中的`x-amzn-marketplace-token` AWS Marketplace 令牌以及客户的标识符进行计费。然后，它应将该令牌值传递给 AWS Marketplace Metering Service 以解析唯一的客户 AWS 账户 ID、客户标识符（对于新的实施或更新您的集成，请改用客户 AWS 账户 ID）和相应的产品代码。有关代码示例，请参阅 [`ResolveCustomer` 代码示例](saas-code-examples.md#saas-resolvecustomer-example)。

**注意**  
注册令牌解析给特定的订阅客户，每个生成的令牌都在 4 小时后过期。只要调用者使用相同的令牌调用 API，它就会一直返回相同的响应值，直到令牌过期。

## 配置您的 SaaS 产品以接受新买家
<a name="configuring-your-saas-application-to-accept-new-customers"></a>

您负责正确地配置 SaaS 软件以接受新客户并对他们进行适当的计量。以下过程概述了一种用于标识、实施和计量新客户对软件的访问的推荐方法：

1. 当客户在 AWS Marketplace 网站上访问您的产品页面时，他们会选择订阅您的产品。

1. 客户 AWS 账户 已订阅您的产品。这意味着从您的产品发送的订阅和计量记录将成为客户 AWS 账单的一部分。

1. 为客户生成一个注册令牌，其中包含其客户的 AWS 账户 ID、标识符和您的产品代码。

1. 客户将被重定向到软件的注册登录页面。本页面必须能够接受具有客户标识符的令牌。

1. 客户的浏览器向您的软件的注册登录页面 URL 发送 `POST` 请求。该请求包含一个 `POST` 参数 `x-amzn-marketplace-token`，其中包含客户的注册令牌。从注册网站的角度来看，客户已使用此参数提交表单。注册令牌是一个不透明的字符串。如果优惠类型为免费试用，则将在请求中添加第二个参数，即值为 `free-trial` 的 `x-amzn-marketplace-offer-type`。

1. 要使用此注册令牌兑换客户 AWS 账户 编号、客户标识符和产品代码，您的网站必须致电 [ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)AWS Marketplace 计量服务。有关 `ResolveCustomer` 调用示例，请参阅 [`ResolveCustomer` 代码示例](saas-code-examples.md#saas-resolvecustomer-example)。客户标识符不是客户的 AWS 账户 ID，但它在产品之间是通用的，应作为客户记录的一部分保存到内部来源。产品代码是 AWS 提供给您的SaaS产品的唯一字符串。每种 AWS 产品都有一个唯一的产品代码，该代码是在注册时分配给您的。

1.  指示客户在产品中创建账户或登录现有账户。
**注意**  
如果在您的产品中设置或关联现有客户账户需要您的团队手动操作，则可以使用“联系我们”表单来收集客户的联系信息。收集他们的联系信息并解析其 AWS 账户 ID 和唯一客户标识符（如步骤 6 所获得的）后，向客户显示一条通知消息。在通知中，说明他们的账户正在设置中，并要求他们等待您与他们联系。向客户提供预期的周转时间和您的联系信息。还要向客户发送一封包含相同详细信息的电子邮件。

1.  客户现在已使用特定于该 SaaS 产品的凭证登录您的网站。在您的账户数据库中，对于每个客户可能都有一个条目。您的账户数据库必须有一列 AWS 账户 ID。确认系统中没有其他账户共享该 AWS 账户 ID。

1. 
**重要**  
S AWS Marketplace aaS 产品的 SNS 通知已被亚马逊 EventBridge 通知所取代。如果您已将现有的 SaaS 产品与 SNS 集成，它们将继续运行。新上架商品最终将过渡到使用Amazon EventBridge 而不是SNS。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

   在卖家注册过程中，您可以配置亚马逊 EventBridge 规则，以便在买家订阅或取消订阅您的商品时接收通知您的事件。以下是 JSON 格式的 Amazon EventBridge 事件，用于通知您买家的操作：
   + 权利通知 - 对于定价模式中包含合同的产品，当买家创建新合同、升级合同、续订合同或合同到期时，您会收到通知。您的账户数据库必须有额外的一列来表示订阅状态。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。
   + 订阅通知 - 对于任何定价模式的产品，包括合同和订阅，当买家订阅或取消订阅产品时，您会收到通知。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

   我们建议您使用亚马逊简单队列服务 (Amazon SQS) Simple Queue Servic EventBridge e 作为捕获这些事件的规则的目标。您在收到带有 `subscribe-success` 的订阅通知后，客户账户已准备就绪，可以计量了。您在此活动之前发送的记录不会计费。*有关如何使用 SQS 目标设置 EventBridge 规则的信息，请参阅[亚马逊用户指南中的亚马逊 SQS](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html#eb-targets-sqs) 目标。 EventBridge *
**注意**  
除非您收到 `subscribe-success` 通知，否则请勿激活产品订阅。

1.  使用存储在数据库中的 AWS 账户 ID 通过 AWS Marketplace 计量服务计量使用情况，或者通过查看授权 AWS Marketplace Entitlement Service。

## 安全性和订购
<a name="security-and-ordering"></a>

 作为卖家，您有责任仅信任立即退回 AWS 账户 IDs 的商品 AWS 或系统已签署的商品。我们建议您立即解析注册令牌，因为它可能会在约一个小时后过期。解析注册令牌后，将该 AWS 账户 ID 作为已签名属性存储在客户的浏览器会话中，直到注册完成。

# SaaS 产品的 Amazon SNS 通知
<a name="saas-notification"></a>

**重要**  
S AWS Marketplace aaS 产品的 SNS 通知已被亚马逊 EventBridge 通知所取代。如果您已将现有的 SaaS 产品与 SNS 集成，它们将继续运行。新上架商品最终将改用亚马逊 EventBridge 代替 SNS。有关更多信息，请参阅 [通过亚马逊管理 SaaS 订阅事件 EventBridge](saas-eventbridge-integration.md)。

要接收通知，您需要订阅商品创建期间向您提供的亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题 AWS Marketplace 。这些主题提供有关客户产品订阅和合同权利发生更改的通知。这可以让您知道什么时候为特定客户提供和撤销访问权限。

**注意**  
在产品创建过程中，您将收到 SNS 主题的实际 Amazon 资源名称 (ARN)。例如：`arn:aws:sns:us-east-1:123456789012:aws-mp-subscription-notification-PRODUCTCODE`

以下 Amazon SNS 主题适用于软件即服务 (SaaS) 产品：
+ [Amazon SNS 主题：`aws-mp-entitlement-notification`](#saas-sns-message-body) – 当买家创建新合同、升级、续订或合同到期时，本主题会通知您。这仅适用于定价模式中包含合同（也称为 **SaaS 合同**和**带消费的 SaaS 合同（超额）**）的产品。
+ [Amazon SNS 主题：`aws-mp-subscription-notification`](#saas-sns-subscription-message-body) – 当买家订阅或取消订阅产品时，本主题会通知您，其中包括专属优惠的 `offer-identifier` 和 SaaS 免费试用的免费试用标志。这适用于所有定价模式，包括合同和订阅（也称为 **SaaS 订阅**、**SaaS 合同**和**带消费的 SaaS 合同（超额）**）。

要详细了解您响应这些通知的场景，请参阅以下主题：
+ [将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)
+ [将你的 SaaS 合同产品与 AWS Marketplace](saas-integrate-contract.md)
+ [将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)

## Amazon SNS 主题：`aws-mp-entitlement-notification`
<a name="saas-sns-message-body"></a>

`aws-mp-entitlement-notification` 主题中的每条消息都采用以下格式。

```
{
    "action": "<action-name>",
    "customer-identifier": " X01EXAMPLEX",
    "product-code": "n0123EXAMPLEXXXXXXXXXXXX",
}
```

*<action-name>*永远如此` entitlement-updated`。

**注意**  
对于权利消息，无论采取何种操作（新建、升级、续订或已过期），消息都是一样的。需要随后调用 `GetEntitlement` 才能发现更新的内容。
对于**含消费的 SaaS 合同（超额）**，为卖家提供 [`aws-mp-subscription-notification` SNS 主题](#saas-sns-subscription-message-body)。这是卖家在增加超额定价时会收到的额外通知。当卖家获得新客户时，卖家会收到一条订阅消息，表明这是新客户，而不仅仅是获得 `entitlement-updated`（这可能是指任何类型的操作）。
对于 future 日期的协议 (FDAs)，此主题在协议开始日期（而不是协议签署日期）启动。此外，当授权后续发生变更时，例如协议取消、更换、续订或到期，该主题也会启动。

具有合同定价的产品（包括与之签订的合同 pay-as-you-go）必须回复这些消息。有关如何响应的更多信息，请参阅[场景：监控用户订阅的更改](saas-integrate-contract.md#saas-contract-monitor-changes)。

## Amazon SNS 主题：`aws-mp-subscription-notification`
<a name="saas-sns-subscription-message-body"></a>

`aws-mp-subscription-notification` 主题中的每条消息都采用以下格式。

```
{
    "action": "<action-name>",
    "customer-identifier": " X01EXAMPLEX",
    "product-code": "n0123EXAMPLEXXXXXXXXXXXX",
    "offer-identifier": "offer-abcexample123",
    "isFreeTrialTermPresent":"true"
}
```

仅当操作为 `subscribe-success` 或 `subscribe-fail` 时，通知中才会包含 `offer-identifier`。当操作为 `unsubscribe-pending` 或 `unsubscribe-success` 时，则通知中不包含此标识符。对于 2024 年 1 月之前创建的优惠，只有关于专属优惠的通知中才会包含此标识符。对于 2024 年 1 月及之后创建的优惠，此标识符将包含在所有优惠的通知中，包括专属优惠和公开优惠。

有关报价类型的信息，请参阅 [DescribeEntity API](https://docs.aws.amazon.com//marketplace/latest/APIReference/work-with-private-offers.html#describe-entity) 的回复或协议[续订控制面板中协议的报价可见性。](https://docs.aws.amazon.com//marketplace/latest/userguide/agreements-renewals-dashboard.html)

**注意**  
 对于 [DescribeEntity API](https://docs.aws.amazon.com//marketplace/latest/APIReference/work-with-private-offers.html#describe-entity)，如果您 AWS 账户 在针对该优惠的定位规则中发现了账户定位方面，则该优惠就是私有优惠。如果账户定位规则 AWS 账户 中没有针对该优惠的定向规则，则为公开报价。

`isFreeTrialTermPresent` 属性会指示买家的订阅是否为免费试用。此属性的 JSON 值不是*布尔*数据类型。而是将该值转换为*字符串*数据类型。有关更多信息，请参阅 [SaaS 免费试用。](https://docs.aws.amazon.com/marketplace/latest/userguide/saas-free-trials.html)

*<action-name>*将根据通知而有所不同。可能的操作包括：
+ `subscribe-success` – `subscribe-success` 消息表示卖家何时可以开始发送计量记录。如果买家接受了[基于协议的报价](https://docs.aws.amazon.com/marketplace/latest/userguide/private-offers-upgrades-and-renewals.html#private-offers-upgrades-and-renewals-process)，这条消息将连同新的 `offer-identifier` 再次发送。
+ `subscribe-fail`— 如果生成`subscribe-fail`消息，即使买家已经从卖家的 SaaS 登录页面过渡到卖家的 SaaS 登录页面，付款也可能失败。 AWS Marketplace 卖家应等待 `subscribe-success` 消息后再允许消费产品。
+ `unsubscribe-pending` – 当买家取消订阅时，会先发送一条 `unsubscribe-pending` 消息。这表明在买家完全取消之前，卖家只有有限的时间（大约一小时）来发送计量记录。
+ `unsubscribe-success` – `unsubscribe-success` 消息表示取消已完成，之后将不再接受任何计量记录。

**注意**  
如果买家取消订阅，然后在发送最终 `unsubscribe-success` 消息之前立即成功重新订阅，则不会发送最终 `unsubscribe-success` 消息，而是发送 `subscribe-success` 消息。
对于 future 日期的协议 (FDAs)，`subscribe-success`操作将在协议开始日期（而不是协议签署日期）启动。

采用订阅定价（包括与之签订的合同 pay-as-you-go）的产品必须回复这些消息。有关如何响应的更多信息，请参阅以下主题。
+ [将您的 SaaS 订阅或 Pay-As-You-Go产品与 AWS Marketplace](saas-integrate-subscription.md)
+ [将基于合同的 SaaS 产品与 AWS Marketplace](saas-integrate-contract-with-pay.md)

## 为 SQS 队列订阅 SNS 主题
<a name="subscribing-an-sqs-queue-to-the-sns-topic"></a>

 我们建议为 Amazon SQS 队列订阅提供的 SNS 主题。有关创建SQS队列并将队列订阅主题的详细说明，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[为 Amazon SQS 队列订阅 Amazon SNS 主题](https://docs.aws.amazon.com/sns/latest/dg/subscribe-sqs-queue-to-sns-topic.html)。

**注意**  
您只能订阅 AWS 账户 用于销售产品的用户的 AWS Marketplace SNS 主题。但是，您可以将消息转发到其他帐户。有关更多信息，请参阅《Amazon Simple Notification Service 开发人员指南》**中的[将 Amazon SNS 消息发送到不同账户的 Amazon SQS 队列](https://docs.aws.amazon.com/sns/latest/dg/sns-send-message-to-sqs-cross-account.html)。

### 轮询 SQS 队列以获取通知
<a name="polling-the-sqs-for-notifications"></a>

在您的 SQS 队列订阅 SNS 主题后，消息将存储在 SQS 中。您需要定义一项服务，以不断轮询该队列，查找消息并相应地处理它们。

# 通过亚马逊管理 SaaS 订阅事件 EventBridge
<a name="saas-eventbridge-integration"></a>

您可以使用 Amazon EventBridge 与集成和管理 SaaS 产品 AWS Marketplace。如果客户对您的产品订阅和合同权利进行更改，则会发送事件。当客户订阅、权利更改以及取消时，您都会收到通知，因此您可以确切地知道何时授予或撤销访问权限。这些事件起到两个主要作用：
+ **制造商** — 这是列表中的原始产品制造商 AWS Marketplace，也称为独立解决方案供应商 (ISV)。
+ **投标人** — 这是中列出的产品的购买协议的原始提议人。 AWS Marketplace这可以是 ISV，也可以是授权转售产品的渠道合作伙伴。

两种不同的销售模式决定了您作为独立软件供应商是制造商还是提议者。您的角色决定了您通过哪些接收通知 EventBridge。


| 卖出模式 | 说明 | ISV 的角色 | 
| --- | --- | --- | 
| AWS Marketplace 公开或私人报价 | 您直接向买家提供报价或协议。 | 既是制造商又是提议者 | 
| 渠道合作伙伴私享优惠 | 获准转售您的产品的渠道合作伙伴会向买家提供报价或协议。 | Manufacturer | 

## EventBridge SaaS 产品活动
<a name="saas-eventbridge-event-types"></a>

当 AWS Marketplace 交易发生时， EventBridge 会将事件发送到您的默认事件总线。您作为制造商或提案人的角色决定了您收到哪些活动。


| 事件名称 | 发起者 | 响应 | 收件人 | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/saas-eventbridge-integration.html)  | 创建新协议、替换现有协议或续订现有协议。 | 记录购买协议并采取售后行动。 DescribeAgreementAPI 用于确定新协议是否为免费试用版。 | 制造商和提案人 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/saas-eventbridge-integration.html)  | 对现有协议进行了修改。 | 购买协议记录已修改。 | 制造商和提案人 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/saas-eventbridge-integration.html)  | 协议已过期、已取消、终止。 | 将记录购买协议的终止情况，并进行协议后的取消行动。ISV 开始撤销客户权利。 | 制造商和提案人 | 
| 许可证已更新-制造商 | 买家对产品的权利已发生变化。 | 使用 GetEntitlements API 检查客户权利，并相应地配置服务。 | 仅限制造商 | 
| 许可证已取消配置-制造商 | 买家对产品的权利已终止。 | 对于基于使用情况的产品，此事件标志着 1 小时的最终报告窗口的开始。卖家应使用 BatchMeterUsage API 收集并报告任何未报告的使用情况。此窗口关闭后，客户权利将被完全撤销，并且不再接受使用情况报告。 | 仅限制造商 | 

**注意**  
除了存在转售授权 ID 之外，制造商和投标人的购买协议事件类型几乎相同。为了避免多余的消息，只有当你既是制造商又是投标人时，才会发送投标人购买协议事件。

有关事件类型的完整列表及其详细架构，请参阅[亚马逊 EventBridge 活动](notifications-eventbridge.md)《卖家指南》。

## 基于使用量的产品的最终使用情况报告窗口
<a name="saas-eventbridge-final-usage"></a>

对于具有基于使用量计费的商品，Marketpl AWS ace 会为卖家提供一小时的时间来为其权利已终止的客户提交最终使用记录。在此期限之后，`BatchMeterUsage`API 会拒绝报告的使用量，并且您无法向客户开具账单。

AWS Marketplace 会发送 “许可证已取消配置-制造商” 事件，以表示最终报告窗口的开始。卖家在收到此事件后有一小时的时间来收集买家未报告的使用情况，并使用 `BatchMeterUsage` API 进行报告。

一小时窗口关闭后， AWS Marketplace 将完全撤销客户的权利，不再接受使用情况报告。

## EventBridge 与你的 SaaS 产品集成
<a name="saas-eventbridge-using"></a>

用于 EventBridge 将租户配置操作与 AWS Marketplace 中的 SaaS 列表集成。
+ 事件规则定义了如何对事件做出反应。这些规则可以立即做出反应，也可以按设定的时间表做出反应。
+ 事件模式在事件规则中定义，允许您筛选发送到默认事件总线的特定事件类型。 EventBridge 控制台中提供了每种事件类型的模式模板。在事件模式配置步骤中，选择 AWS 服务作为事件源，选择 AWS Marketplace 协议和许可作为 AWS 服务。
  + 所有 AWS Marketplace 协议和许可事件类型均使用以下结构。

  ```
  {
  "detail-type": ["e.g. Purchase Agreement Ended - Manufacturer"],
  "source": ["aws.agreement-marketplace"]
  }
  ```
+ 目标是在事件与为规则定义的事件模式相匹配时接收事件的资源。许多 AWS 服务都集成 EventBridge 并可以用作目标，包括 Lambda 函数、Step Functions 和 API Gateway。

有关设置 EventBridge 规则的更多信息，请参阅[入门：创建 Amazon EventBridge 事件总线规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)。

# 访问 AWS Marketplace 计量和授权服务 APIs
<a name="saas-integration-metering-and-entitlement-apis"></a>

此部分概述了与 AWS Marketplace Metering Service 或 AWS Marketplace Entitlement Service集成的过程，用于确保您对软件即服务（SaaS）产品的客户用量进行准确计费和报告。假定您提交了已发布为受限状态的 SaaS 订阅产品或 SaaS 合同产品。在受限状态下，您可以使用测试账户来验证具有正确的配置和功能，但您的产品没有公开发布。

**注意**  
如果您的 SaaS 产品与其他以不同方式处理计量的 AWS 托管服务（例如 Amazon G SageMaker round Truth 或 AWS WAF）集成，则您无需与 AWS Marketplace 计量服务集成。您的产品只能在一个系统中进行计量，以避免向客户重复计费。

**Topics**
+ [配置 SaaS 订阅用量的计量](metering-for-usage.md)
+ [使用检查权利 AWS Marketplace Entitlement Service](checking-entitlements.md)
+ [SaaS 产品集成核对清单](aws-marketplace-integration-checklist.md)

 有关设置和凭据的信息 AWS CLI，请参阅[《*AWS Command Line Interface 用户指南*》 AWS CLI中的配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。如果你不熟悉 AWS Python SDK，请参阅 Boto 3 [快速入门](https://boto3.readthedocs.io/en/latest/guide/quickstart.html)。

# 配置 SaaS 订阅用量的计量
<a name="metering-for-usage"></a>

对于软件即服务 (SaaS) 订阅，您可以计量所有使用情况，然后 AWS 根据您提供的计量记录向客户计费。对于 SaaS 合同，您只能计量客户合同权利中的用量。以下各节提供有关如何配置 SaaS 产品用量的计量的信息。

当您的应用程序计量客户的使用量时，您的应用程序会 AWS 提供累积的使用量。您的应用程序根据您在创建产品时定义的定价维度进行计量，例如传输的 GB 数据量或者给定小时内扫描的主机数。例如，如果您根据发送到应用程序的数据量收费，则可以测量数据量并每小时发送一次相应的计量记录。 AWS 使用计量数据以及您在创建产品时提供的价格来计算客户的账单。

对于支持并发协议的产品，计量是在许可证级别而不是产品级别进行的。每条使用记录都必须包含一个`LicenseArn`，以确定该使用适用于哪个特定协议。`LicenseArn`是从 SaaS 注册期间的 `ResolveCustomer` API 响应中获得的。这使买家能够为同一产品维护多个有效协议，并根据协议跟踪使用情况并单独计费。

**注意**  
或者，您可以将用量按您跟踪的属性分配。这些属性作为标签展示给买家。这些标签允许买家按标签值查看按用量划分的费用。例如，如果您按用户收费，并且用户具有 `Department` 属性，则可以使用键为 `Department` 的标签创建用量分配，每个值一个分配。这不会更改您报告的价格、维度或总用量，但允许您的客户按与您的产品相应类别查看其成本。有关更多信息，请参阅 [供应商计量标记（可选）](#saas-vendor-metered-tagging)。

**Topics**
+ [按小时计量](#metering-hourly)
+ [将您的产品配置为计量用量](#configure-application-for-meter-usage)
+ [供应商计量标记（可选）](#saas-vendor-metered-tagging)

## 按小时计量
<a name="metering-hourly"></a>

我们建议您以 AWS 每小时为单位向所有客户报告使用情况，每次最多 25 个。这可以让客户尽可能详细地查看其用量和成本。如果您汇总了超过一个小时（例如一天）时段的用量，请注意以下注意事项。
+ AWS 只有在收到您的计量记录后，才能向客户开具产品使用费。您有责任确保已成功发送并收到您的产品的计量记录。您可以使用 AWS CloudTrail 来验证您发送的一条或多条记录是否准确。您还可以使用这些信息来执行一段时间的审计。有关更多信息，请参阅 [使用记录 AWS Marketplace API 调用 AWS CloudTrail](cloudtrail-logging.md)。
+ 如果这是定价模式为“订阅”（不是“合同”或“带有消费产品的合同”定价模式）的 SaaS，则买家可以随时取消订阅。当买家发起取消订阅操作时，卖家将收到 `unsubscribe-pending` [通知](saas-notification.md#saas-sns-subscription-message-body)，并且在收到最终 `unsubscribe-success` 通知之前有 1 小时的时间发送所有未报告的用量。第二个通知发送之后的任何操作都将不会执行。另外两种定价模式根据订阅时间设定了期限，买家无法在这段时间内取消订阅，只能关闭自动续订。如果不是自动续订，则系统将在该期限结束时发送相同的通知。
+ 对于具有并发协议的产品：取消订阅通知和 1 小时时段适用于每份单独的协议，而不是针对每个产品。如果买家取消了多个有效协议中的一个，您可以继续对剩余的有效许可证进行计量。只有已取消的协议的使用必须在收到特定许可证`unsubscribe-pending`通知后的 1 小时内提交。
+ 如果您不按小时发送计量记录，那么当应用程序或网络出现中断时，您的记录将落后于实际用量。如果应用程序或网络中断在订阅到期后恢复正常，可能会导致未报告的用量。
+ 即使没有可报告的用量，您也可以继续每小时发送一次计量记录。如果某个小时没有可报告的用量，则记录的数量为 0。请注意，在您报告买家某个维度的用量（0 或以上）后，您无法修改记录。因此，最佳实践是报告前一小时的用量。在整个账单周期，报告的用量都会显示在买家的 [AWS 账单与成本管理](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)控制台中。该控制台在单独的行项目中显示产品的各个维度，包括在账单周期或迄今为止消耗的总单位数和相应行项目消费的总成本，即使维度价格为每单位 0 美元。如果启用，[AWS 成本和使用情况报告（CUR）](https://docs.aws.amazon.com/cur/latest/userguide/what-is-data-exports.html)将显示这些详细信息，包括单位费率。这些报告不是实时更新的。
+ 在发布期间， AWS Marketplace 运营团队将在允许发布产品之前测试 SaaS 应用程序是否成功发送了计量记录。通常，该团队将模拟注册 SaaS 并确认已收到计量记录。

**注意**  
如果您的 SaaS 产品与其他以不同方式处理计量的 AWS 托管服务（例如 Amazon G SageMaker round Truth 或 AWS WAF）集成，则您无需与 AWS Marketplace 计量服务集成。您的产品只能在一个系统中进行计量，以避免向客户重复计费。请注意， AWS Marketplace 目前并未发布新 AWS WAF 产品。

## 将您的产品配置为计量用量
<a name="configure-application-for-meter-usage"></a>

 您可以在 AWS Marketplace Metering Service 中使用 `BatchMeterUsage` 操作向 AWS提供计量记录。记住以下内容：
+  我们要求卖家通过 `BatchMeterUsage` 操作来使用批处理。
+  我们按小时去除重复的计量请求。
  + 对于非并发协议产品：对请求进行重复数据删除。product/customer/hour/dimension. For Concurrent Agreements products: Requests are deduplicated per license/customer/hour/dimension
  + 您始终可以重试任何请求，但是，如果您计量了不同的数量，将按照原始数量计费。对于并发协议产品：使用相同的方法重试`LicenseArn`是安全的，并且要遵循标准的重复数据删除规则。但是，在同一使用窗口之间切`LicenseArn`换`ProductCode`和切换会导致重复计费。
  +  如果您针对同一请求发送多个请求customer/dimension/hour，则不会对记录进行汇总。
+ 如果买家订阅了您的产品，则卖家可以发送包含最多 6 小时的时间戳的计量记录。如果客户取消订阅，卖家必须在客户取消订阅后的 1 小时内发送计量记录。
+ `BatchMeterUsage` 有效负载不得超过 1MB。选择要在 `BatchMeterUsage` 请求中发送的用量记录数量，这样您就不会超过有效负载的大小。
+  AWS Marketplace 计量服务可在*AWS 一般参考*的[AWS Marketplace 终端节点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-marketplace.html)中 AWS 区域 列出。在您请求产品时，默认为 SaaS 计量产品启用美国东部（弗吉尼亚州北部）区域。如果您打算使用其他区域，请联系 [https://aws.amazon.com/marketplace/management/contact-us/](https://aws.amazon.com/marketplace/management/contact-us/)团队。有关更多信息，请参阅 [BatchMeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_BatchMeterUsage.html)。
+ 并发协议：单个客户可能有多个针对您的产品的有效协议。每份协议都有其独特性`LicenseArn`，每份许可证的使用情况都单独跟踪。[在此](https://catalog.workshops.aws/mpseller/en-US/saas/integration-for-concurrent-agreements)处查看并发协议的新集成。对于新的实现，每个实现都`UsageRecord`必须包含一个`LicenseArn`字段，用于标识该用法适用于哪个协议。`LicenseArn`是从 `ResolveCustomer` API 响应中获得的。

**注意**  
对于现有实施：从基于产品的计量迁移到基于许可证的计量时，不要在同一小时内向两者`LicenseArn`发送计量记录，也不要向同一客户发送计量记录。`ProductCode`这将导致重复计费。请勿在请求`ProductCode`级别包含。每个`LicenseArn`中的都`UsageRecord`标识了产品和具体协议。

有关代码示例，请参阅 [SaaS 产品集成的代码示例](saas-code-examples.md)。

### 示例：主机扫描
<a name="host-scanning-example"></a>

 您的产品对计算硬件进行分析以查找已知的安全漏洞。客户手动发起或安排对其 Amazon Elastic Compute Cloud (Amazon EC2) 实例进行这些扫描。当产品执行这些扫描时，它会记录每小时扫描的唯一主机数。在此示例中，您的产品使用**主机**类别。您可以为扫描的主机类型声明多个维度。例如，您可以针对小型、中型和大型主机按不同的价格收费。

### 示例：日志分析
<a name="log-analysis-example"></a>

 您的 SaaS 产品会汇总由客户产品生成的日志、报告趋势和异常。当客户将日志上传到您的产品时，您可以测量收到的数据量（度量单位为兆字节、千兆字节或千吉字节）。在每个小时的第 10 分钟，cron 任务读取每位客户在上个小时的这一用量。任务生成批处理报告，并使用 `BatchMeterUsage` 操作将报告发送到 AWS。在此示例中，您的产品使用**数据**别。您的产品也可以按任何给定小时内存储的日志数据量进行计量。在这种情况下，您的产品可以按两个维度进行计量：此小时内收到的数据量和此小时内存储的总数据量。您可以继续计量存储的数据，直到客户删除此数据或数据到期为止。

## 供应商计量标记（可选）
<a name="saas-vendor-metered-tagging"></a>

供应商计量标签可帮助独立软件供应商 (ISVs) 让购买者更精细地了解其软件使用情况，并可以帮助他们进行成本分配。

有许多方法可以标记买家的软件使用情况。一种方法是先询问买家他们希望在成本分配中看到什么。然后，您可以在为买家帐户跟踪的属性之间分配使用情况。属性的示例包括 `Account ID`、`Business Unit`、`Cost Centers`，以及您的产品的其他相关元数据。这些属性作为标签展示给买家。使用标签，买家可以在 AWS 账单控制台（[https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/)）中查看按标签值划分为使用量的费用。供应商计量标记不会更改您报告的价格、维度或总用量。它允许您的客户按您产品的相应类别查看成本。

**注意**  
供应商计量标记 (VMT) 产品目前不支持并发协议许可证级别计量。如果您的产品使用 VMT，请继续使用`ProductCode`基于标准的计量。

在常见情形中，买家会通过一个 AWS 账户订阅您的产品。买家还有许多与同一产品订阅相关的用户。您可以使用具有 `Account ID` 键的标签创建用量分配，然后将用量分配给每个用户。在这种情况下，买家可以在其账单与成本管理控制台中激活 `Account ID` 标签并分析个人用户的使用情况。

### 卖家体验
<a name="saas-vendor-metered-tag-seller"></a>

卖家可以汇总具有相同标签集的资源的计量记录，而不是汇总所有资源的使用情况。例如，卖家可以构造包含不同的 `UsageAllocations` 存储桶的计量记录。每个存储桶代表一组标签的 `UsageQuantity`，例如 `AccountId` 和 `BusinessUnit`。

在下图中，**资源 1** 具有一组唯一的 `AccountId` 和 `BusinessUnit` 标签，并作为单个条目出现在**计量记录**中。

**资源 2** 和**资源 3** 都具有相同的 `AccountId` 标签 `2222` 和相同的 `BusinessUnit` 标签 `Operations`。因此，它们在**计量记录**中合并为一个 `UsageAllocations` 条目。

![\[该图显示了供应商计量标签如何合并用量数据。三个具有不同 AccountIds 和的资源（资源 1、2 和 3）在发送到 M AWS arketplace 计量服务 BusinessUnit 之前，将 UsageAllocations 按分组 AccountId 并整合到单个计量记录中。 BusinessUnits\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/images/seller-vendor-meter-tag.png)


卖家还可以将没有标签的资源组合成一个 `UsageAllocation`，然后将其作为 `UsageAllocations` 中的一个条目发送。

限制包括：
+ 标签数 – 5
+ `UsageAllocations`（基数）的大小 – 2500
+ 最大请求大小 – 1 MB 

验证包括：
+ 标签键和值允许使用的字符 — a-zA-Z 0-9\$1-= 。 \$1:\$1 /@
+ `UsageAllocation` 列表中的最大标签数 – 5
+ 两个 `UsageAllocations` 的标签不能相同（也就是说，标签键和值的组合相同）。如果是这样的话，他们必须使用相同的 `UsageAllocation`。
+ `UsageAllocation` 的 `AllocatedUsageQuantity` 之和必须等于 `UsageQuantity`，即聚合用量。
+ 最大有效负载大小不能超过 1 MB。这包括输入属性键（例如，`UsageRecords`、`AllocatedUsageQuantity`、标签）。
**注意**  
为确保您没有违反有效负载限制，请根据业务要求创建具有最大大小的示例请求对象，将该对象转换为 JSON 字符串，然后获取以字节为单位的大小。确保单个 API 调用不会超过 1 MB 的限制。例如。如果一个带有 1 `UsageRecord` 的请求的最大大小为 200 KB，则作为请求的一部分发送的内容不要超过 5 `UsageRecords`（200KB \$1 5 = 1MB）。

### 买家体验
<a name="saas-vendor-metered-tag-buyer"></a>

下表显示了买家激活 `AccountId` 和 `BusinessUnit` 供应商标签后的买家体验示例。

在此示例中，买家可以在其**成本使用报告**中看到分配的用量。供应商计量标签使用前缀 `“aws:marketplace:isv”`。在账单与成本管理中，买家可以再**成本分配标签**下的 **AWS生成的成本分配标签**中激活它们。

**成本使用报告**的第一行和最后一行与卖家向 Metering Service 发送的内容相关（如 [卖家体验](container-metering-meterusage.md#container-vendor-metered-tag-seller) 示例所示）。


**成本使用报告（简化）**  

| ProductCode  | 买家 | UsageDimension | UsageQuantity | `aws:marketplace:isv:AccountId ` | `aws:marketplace:isv:BusinessUnit` | 
| --- | --- | --- | --- | --- | --- | 
| xyz | 111122223333 | 网络：每 (GB) 检查一次  | 70 | 2222 | 运营 | 
| xyz | 111122223333 | 网络：每 (GB) 检查一次  | 30 | 3333 | 财务 | 
| xyz | 111122223333 | 网络：每 (GB) 检查一次  | 20 | 4444 | IT | 
| xyz | 111122223333 | 网络：每 (GB) 检查一次  | 20 | 5555 | 市场营销 | 
| xyz | 111122223333 | 网络：每 (GB) 检查一次  | 30 | 1111 | 市场营销 | 

有关代码示例，请参阅 [带有用量分配标签的 `BatchMeterUsage` 代码示例（可选）](saas-code-examples.md#saas-batchmeterusage-tagging)。

# 使用检查权利 AWS Marketplace Entitlement Service
<a name="checking-entitlements"></a>

 如果您的产品是 SaaS 合同产品，则您的产品会调用， AWS Marketplace Entitlement Service 以使用 [GetEntitlements](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)API 检索客户的权利。您的产品应根据 AWS Marketplace 授权服务验证该账户的后续使用情况。例如，如果客户在账户中预置 10 个用户，则您的产品应检查 AWS Marketplace 授权服务以获取该容量的使用权限。

要验证客户是否有权使用您的产品，请使用 AWS Marketplace 授权服务中的`GetEntitlements`操作。 AWS Marketplace 授权服务仅在美国东部（弗吉尼亚北部）地区提供，可通过`entitlement.marketplace.us-east-1.amazonaws.com`或访问`entitlement-marketplace.us-east-1.api.aws`。

 `GetEntitlements`接受客户 AWS 账户 ID、客户标识符、许可 ARN 和维度作为筛选条件。 `ProductCode`是必填参数。该操作返回权限的分页列表。结果有一个 `ExpirationDate` 字段，显示该权利有效的最短时段。如果客户设置了自动续订，则 ExpirationDate 字段中的日期为续订日期。

有关代码示例，请参阅 [SaaS 产品集成的代码示例](saas-code-examples.md)。

## 检索用户操作权利
<a name="retrieving-entitlement-on-user-actions"></a>

 以下示例可以帮助您更好地了解检索用户操作权利的流程。

### 示例：基于用户的产品
<a name="example-user-based-application"></a>

 您提供的产品允许给定客户拥有一定数量的账户。客户可以访问控制面板来预置新用户（例如，分配凭证）。当客户配置新用户时，您的产品会调用 `GetEntitlements` 来验证容量是否存在。如果不是，您可以致电 AWS Marketplace 计量服务为其他用户开具账单。

### 示例：数据存储产品
<a name="example-data-storage-application"></a>

 您提供的产品让客户能够以加密或未加密格式存储一定量的数据。客户可以查看控制面板，该控制面板显示了您的产品中现有和分配的数据量。您的控制面板通过 `GetEntitlements` 检索分配数量。

# SaaS 产品集成核对清单
<a name="aws-marketplace-integration-checklist"></a>

在推出软件即服务（SaaS）产品之前，您必须验证您是否已完成所需的配置。您可以使用以下 SaaS 集成核对清单来验证您是否已完成所需的配置。


|  **类别**  |  **要求**  | 
| --- | --- | 
| 访问  | 提交了包含所需 AWS 账户的卖家注册表以供 AWS Marketplace 使用。 | 
| 访问  | 完成了卖家注册，包括条款和条件、银行账户以及 W8 或 W9 税务表单。 | 
| 访问  | 为注册账户配置跨 AWS Marketplace 账户角色。 | 
| 产品  | 在 AWS Marketplace 管理门户中完成产品申请表。 | 
| 产品  | 在 AMMP 中创建产品向导的 “备注” 选项卡中提供了测试 AWS 账户 IDs 。 | 
| 产品  | 在产品选项卡中以 .txt 格式提供 EULA 的 URL。 | 
| 产品  | 已收到您的商品代码和 Amazon SNS 主题信息。 AWS Marketplace | 
| 产品  | 订阅 Amazon SNS 主题并创建了 Amazon SQS 队列以订阅 Amazon SNS 主题。 | 
| 计费解决方案  | 经过验证，您可以每小时向BatchMeterUsage运营部门发送计量记录，以获取每位客户的 SaaS 订阅产品的许可证。可以为 SaaS 合同产品，按照每位客户的额外用量发送计量记录。 | 
| 计费解决方案  | 经过验证后，您可以验证 SaaS 合同产品的 AWS Marketplace 授权服务中的客户权利。 | 
| 计费解决方案  | 验证了该成本按预期显示在为测试账户生成的账单上。 | 
| 计费解决方案  | 针对客户无效 IDs 和订阅取消等情况进行了测试。 | 
| 产品  | 已将产品请求提交回以 AWS Marketplace 供发布。 | 
| 注册  | 实现了可接受 HTTP POST 请求的 HTTPS 注册页面。 | 
| 注册  | 验证了您可接受新客户注册。 | 
| 注册  | 验证了您未将注册令牌存储在 cookie 中。 | 
| 注册  | 已验证您正在ResolveCustomer使用该 AWS 令牌获取ProductCodeCustomerAWSAccountId、和LicenseArn。 | 
| 注册  | 经过验证后，您可以毫不延迟地解析收到 AWS 的注册令牌。 | 
| 注册  | 测试了没有阻止如 Gmail 这样的电子邮件服务地址进行注册。 | 
| 注册  | 测试了能接受不完整的注册和多次注册尝试。 | 
| 订阅  | 测试了您可以处理 unsubscribe-pending 和 unsubscribe-success 消息。 | 
| 订阅  |  验证了您发送在一小时内接收 `unsubscribe-pending` 消息的最终计量记录。  | 
| 安全性  | 已验证 AWS 根账户没有 API 密钥、密码强且与硬件多因素身份验证 (MFA) 设备关联。所有管理访问权限均通过使用 AWS Identity and Access Management (IAM) 创建的身份进行。无共享账户。 | 
| 安全性  | 验证了 IAM 角色用于所有编程式 Amazon Elastic Compute Cloud (Amazon EC2) 访问。凭证未硬编码到脚本、标头或源代码中。 | 
| 安全性  | 验证了您维护着全面的日志记录和日志合并。 | 
| 安全性  | 验证了您有明确定义的公有子网和私有子网边界，隔离应用程序服务，以及对数据库和文件系统的访问。区分敏感数据以及分隔公有和私有数据的不同数据类定义。 | 
| 安全性  | 验证了您使用传输中和静态私有数据加密并按计划轮换密钥。 | 
| 安全性  | 验证了您采用了安全事故工具和访问措施，以及定期安排的事件响应演习，以便于及时调查和恢复。 | 
| 可靠性  | 验证了系统可适应不断变化的需求来向上扩展和向下扩展，并采用负载平衡，以确保高性能。系统还根据需要提供基于边缘的缓存。 | 
| 可靠性  | 验证了已指定恢复时间和恢复点目标，并定期安排灾难恢复。组件故障可通过自动触发器和通知自我修复。 | 

# 在 SaaS 产品上进行报告 AWS Marketplace
<a name="saas-reporting"></a>

AWS Marketplace 为您的软件即服务 (SaaS) 产品生成报告，其中包括订阅者、财务、使用情况和税收方面的数据。下表提供了有关可用报告的信息。您可以使用报告来更深入地了解您的客户群，并更好地掌握财务状况，包括销售额和税费。下表总结了报告 SaaS 产品的财务信息的方式。


| 报告 | SaaS 内容 | 
| --- | --- | 
| 每日业务报告 |   预付合同费用显示在**费用**部分中。 计量使用费显示在**用量**部分。 | 
| 月度收入报告 |   预付合同费用显示在**年度订阅**部分中。  计量使用费用显示在**账单和收入数据**部分中。 | 
| 销售补偿报告 |   预付合同费用和每月额外使用费作为单独的行项目显示。 | 
| 客户订阅用户报告 |   新的 SaaS 合同显示在 **Annual subscriptions (年度订阅)** 部分中。  新的 SaaS 订阅显示在 **Hourly/monthly subscriptions (每小时/每月订阅)** 部分中。 | 

# SaaS 产品集成的代码示例
<a name="saas-code-examples"></a>

您可以使用以下代码示例将您的软件 AWS Marketplace APIs 即服务 (SaaS) 产品与发布和维护产品所需的产品集成。有关更多信息，请参阅以下部分。

**Topics**
+ [`ResolveCustomer` 代码示例](#saas-resolvecustomer-example)
+ [`GetEntitlement` 代码示例](#saas-getentitlement-example)
+ [`BatchMeterUsage` 代码示例](#saas-batchmeterusage-example)
+ [`BatchMeterUsage`代码示例：使用许可证 ARN](#saas-batchmeterusage-licensearn-example)
+ [带有用量分配标签的 `BatchMeterUsage` 代码示例（可选）](#saas-batchmeterusage-tagging)

## `ResolveCustomer` 代码示例
<a name="saas-resolvecustomer-example"></a>

以下代码示例与所有定价模式相关。Python 示例使用`x-amzn-marketplace-token`令牌兑换`CustomerIdentifier``ProductCode`、`LicenseArn`、和`CustomerAWSAccountId`。`CustomerAWSAccountId`是与订阅关联的 AWS 账户 ID，`LicenseArn`也是特定已授予许可证的唯一标识符。这些用于通过购买的软件 AWS Marketplace。此代码在注册网站上的应用程序中运行（当您从 AWS Marketplace 管理门户重定向到该位置时）。重定向是一个包含令牌的 POST 请求。

有关更多信息`ResolveCustomer`，请参阅《*AWS Marketplace 计量服务 API 参考*》[ResolveCustomer](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html)中的。

**注意**  
要进行新的实施或更新集成时，请使用客户 AWSAccount ID 代替 CustomerIdentifier。

```
# Import AWS Python SDK and urllib.parse 
import boto3
import urllib.parse as urlparse 

# Resolving Customer Registration Token
formFields = urlparse.parse_qs(postBody)
regToken = formFields['x-amzn-marketplace-token'][0]

# If regToken present in POST request, exchange for customerID
if (regToken):
    marketplaceClient = boto3.client('meteringmarketplace')
    customerData = marketplaceClient.resolve_customer(RegistrationToken=regToken)
    productCode = customerData['ProductCode']
    customerID = customerData['CustomerIdentifier']
    customerAWSAccountId = customerData['CustomerAWSAccountId']
    licenseARN = customerData['LicenseArn']

    # TODO: Store customer information 
    # TODO: Validate no other accounts share the same customerID
```

### 响应示例
<a name="saas-resolvecustomer-example-response"></a>

```
{
    'CustomerIdentifier': 'string',
    'CustomerAWSAccountId':'string',
    'ProductCode': 'string',
    'LicenseArn' : 'string'
}
```

## `GetEntitlement` 代码示例
<a name="saas-getentitlement-example"></a>

以下代码示例与具有合同的 SaaS 产品和具有消费定价模式的 SaaS 合同相关。Python 示例将验证客户是否具有有效权限。

有关更多信息`GetEntitlement`，请参阅《*AWS Marketplace 授权服务 API 参考*》[GetEntitlement](https://docs.aws.amazon.com/marketplaceentitlement/latest/APIReference/API_GetEntitlements.html)中的。

```
# Import AWS Python SDK
import boto3

marketplaceClient = boto3.client('marketplace-entitlement', region_name='us-east-1')

# Filter entitlements for a specific customerID
#
# productCode is supplied after the AWS Marketplace Ops team has published 
# the product to limited
# 
# customerID is obtained from the ResolveCustomer response
entitlement = marketplaceClient.get_entitlements({
    'ProductCode': 'productCode',
    'Filter' : {
        # Option 1: Using CustomerIdentifier (for new or updated integrations, use the customer AWS account ID)
        'CUSTOMER_IDENTIFIER': [
            'customerID',
        ]
        # Option 2: Using CustomerAWSAccountId (preferred)
        # 'CUSTOMER_AWS_ACCOUNT_ID': [
        #     'awsAccountId',
        # ]
        # Option 3: Using LICENSE_ARN (to get entitlements for the license)
        # 'LICENSE_ARN': [
        #     'licenseARN',
        # ]
    },
    'NextToken' : 'string',
    'MaxResults': 123
})

# TODO: Verify the dimension a customer is subscribed to and the quantity, 
# if applicable
```

### 响应示例
<a name="saas-getentitlement-example-response"></a>

返回的值与您在 AWS Marketplace 管理门户中创建产品时所创建的维度对应。

```
{
   "Entitlements": [ 
      { 
         "CustomerIdentifier": "string",
         "CustomerAWSAccountId": "string",
         "Dimension": "string",
         "ExpirationDate": number,
         "ProductCode": "string",
         "LicenseArn": "string",
         "Value": { 
            "BooleanValue": boolean,
            "DoubleValue": number,
            "IntegerValue": number,
            "StringValue": "string"
         }
      }
   ],
   "NextToken": "string"
}
```

## `BatchMeterUsage` 代码示例
<a name="saas-batchmeterusage-example"></a>

以下代码示例与具有消费定价模式的 SaaS 订阅和合同相关，但不适用于不带消费的 SaaS 合同产品。Python 示例向发送了一份计量记录 AWS Marketplace ，向您的客户收取 pay-as-you-go费用。

```
# NOTE: Your application will need to aggregate usage for the 
#       customer for the hour and set the quantity as seen below. 
# AWS Marketplace can only accept records for up to an hour in the past. 
#
# productCode is supplied after the AWS Marketplace Ops team has 
# published the product to limited
#
# You can use either:
# - customerID from the ResolveCustomer response
# - AWS account ID of the buyer

# Import AWS Python SDK
import boto3
from datetime import datetime

# Option 1: Using CustomerIdentifier (for new or updated integrations, use the customer AWS account ID)
usageRecord = [
    {
        'Timestamp': datetime(2015, 1, 1),
        'CustomerIdentifier': 'customerID',
        'Dimension': 'string',
        'Quantity': 123
    }
]

# Option 2: Using CustomerAWSAccountId (preferred)
# usageRecord = [
#     {
#         'Timestamp': datetime(2015, 1, 1),
#         'CustomerAWSAccountId': 'awsAccountId',
#         'Dimension': 'string',
#         'Quantity': 123
#     }
# ]

marketplaceClient = boto3.client('meteringmarketplace')

response = marketplaceClient.batch_meter_usage(
    UsageRecords=usageRecord,
    ProductCode='productCode'
)
```

有关更多信息`BatchMeterUsage`，请参阅《*AWS Marketplace 计量服务 API 参考*》[BatchMeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_BatchMeterUsage.html)中的。

### 响应示例
<a name="saas-batchmeterusage-example-response"></a>

```
{
    'Results': [
        {
            'UsageRecord': {
                'Timestamp': datetime(2015, 1, 1),
                'CustomerIdentifier': 'string',
                'CustomerAWSAccountId': 'string',
                'Dimension': 'string',
                'Quantity': 123
            },
            'MeteringRecordId': 'string',
            'Status': 'Success' | 'CustomerNotSubscribed' | 'DuplicateRecord'
        },
    ],
    'UnprocessedRecords': [
        {
            'Timestamp': datetime(2015, 1, 1),
            'CustomerIdentifier': 'string',
            'CustomerAWSAccountId': 'string',
            'Dimension': 'string',
            'Quantity': 123
        }
    ]
}
```

## `BatchMeterUsage`代码示例：使用许可证 ARN
<a name="saas-batchmeterusage-licensearn-example"></a>

以下代码示例与支持并发协议的 SaaS 产品相关。当买家注册您的商品时，`ResolveCustomer`API 会返回`LicenseArn`和`CustomerAWSAccountId`。

```
# NOTE: Your application will need to aggregate usage for the
#       customer for the hour and set the quantity as seen below.
# AWS Marketplace can only accept records for up to an hour in the past.
#
# LicenseArn and CustomerAWSAccountId are returned by the ResolveCustomer
# API when a buyer registers to your product

# Import AWS Python SDK
import boto3
from datetime import datetime


usageRecord = [{
    'LicenseArn' : 'licenseArn',
    'Timestamp': datetime(2015, 1, 1),
    'CustomerAWSAccountId': 'awsAccountId',
    'Dimension': 'string',
    'Quantity': 123
}]


marketplaceClient = boto3.client('meteringmarketplace')

response = marketplaceClient.batch_meter_usage(
    UsageRecords = usageRecord
)
```

### 响应示例
<a name="saas-batchmeterusage-licensearn-example-response"></a>

```
{
    'Results': [
        {
            'UsageRecord': {
                'Timestamp': datetime(2015, 1, 1),
                'CustomerIdentifier': 'string',
                'CustomerAWSAccountId': 'string',
                'Dimension': 'string',
                'Quantity': 123,
                'LicenseArn': 'string'
            },
            'MeteringRecordId': 'string',
            'Status': 'Success' | 'CustomerNotSubscribed' | 'DuplicateRecord'
        },
    ],
    'UnprocessedRecords': [
        {
            'Timestamp': datetime(2015, 1, 1),
            'CustomerIdentifier': 'string',
            'CustomerAWSAccountId': 'string',
            'Dimension': 'string',
            'Quantity': 123,
            'LicenseArn': 'string'
        }
    ]
}
```

## 带有用量分配标签的 `BatchMeterUsage` 代码示例（可选）
<a name="saas-batchmeterusage-tagging"></a>

以下代码示例适用于采用用量定价模式的 SaaS 订阅和合同，但不适用于未采用用量定价模式的 SaaS 合同产品。Python 示例将带有相应使用量分配标签的计量记录发送给您的客户 AWS Marketplace ，以向您的客户收取 pay-as-you-go费用。

```
# NOTE: Your application will need to aggregate usage for the 
#       customer for the hour and set the quantity as seen below. 
# AWS Marketplace can only accept records for up to an hour in the past. 
#
# productCode is supplied after the AWS Marketplace Ops team has 
# published the product to limited
#
# You can use either:
# - customerID from the ResolveCustomer response
# - AWS account ID of the buyer

# Import AWS Python SDK
import boto3
import time

# Option 1: Using CustomerIdentifier (for new or updated integrations, use the customer AWS account ID)
usageRecords = [
    {
        "Timestamp": int(time.time()),
        "CustomerIdentifier": "customerID",
        "Dimension": "Dimension1",
        "Quantity": 3,
        "UsageAllocations": [ 
            { 
                "AllocatedUsageQuantity": 2, 
                "Tags": [ 
                    { "Key": "BusinessUnit", "Value": "IT" },
                    { "Key": "AccountId", "Value": "*********" },
                ]
            },
            { 
                "AllocatedUsageQuantity": 1, 
                "Tags": [ 
                    { "Key": "BusinessUnit", "Value": "Finance" },
                    { "Key": "AccountId", "Value": "*********" },
                ]
            },
        ]
    }    
]

# Option 2: Using CustomerAWSAccountId (preferred)
# usageRecords = [
#     {
#         "Timestamp": int(time.time()),
#         "CustomerAWSAccountId": "awsAccountId",
#         "Dimension": "Dimension1",
#         "Quantity": 3,
#         "UsageAllocations": [ 
#             { 
#                 "AllocatedUsageQuantity": 2, 
#                 "Tags": [ 
#                     { "Key": "BusinessUnit", "Value": "IT" },
#                     { "Key": "AccountId", "Value": "*********" },
#                 ]
#             },
#             { 
#                 "AllocatedUsageQuantity": 1, 
#                 "Tags": [ 
#                     { "Key": "BusinessUnit", "Value": "Finance" },
#                     { "Key": "AccountId", "Value": "*********" },
#                 ]
#             },
#         ]
#     }    
# ]

marketplaceClient = boto3.client('meteringmarketplace')

response = marketplaceClient.batch_meter_usage(
    UsageRecords=usageRecords,
    ProductCode="testProduct"
)
```

有关的更多信息`BatchMeterUsage`，请参阅 *AWS Marketplace Metering Service API 参考[BatchMeterUsage](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_BatchMeterUsage.html)*中的。

### 响应示例
<a name="saas-batchmeterusage-tagging-response"></a>

```
{
    "Results": [
        {
            "Timestamp": "1634691015",
            "CustomerIdentifier": "customerId",
            "CustomerAWSAccountId": "awsAccountId",
            "Dimension": "Dimension1",
            "Quantity": 3,
            "UsageAllocations": [ 
                { 
                    "AllocatedUsageQuantity": 2, 
                    "Tags": [ 
                        { "Key": "BusinessUnit", "Value": "IT" },
                        { "Key": "AccountId", "Value": "*********" }
                    ]
                },
                { 
                    "AllocatedUsageQuantity": 1, 
                    "Tags": [ 
                        { "Key": "BusinessUnit", "Value": "Finance" },
                        { "Key": "AccountId", "Value": "*********" }
                    ]
                }
            ],
            "MeteringRecordId": "8fjef98ejf",
            "Status": "Success"
        }
    ],
    "UnprocessedRecords": [
        {
            "Timestamp": "1634691015",
            "CustomerIdentifier": "customerId",
            "CustomerAWSAccountId": "awsAccountId",
            "Dimension": "Dimension1",
            "Quantity": 3,
            "UsageAllocations": []
        }
    ]
}
```

# 使用亚马逊 VPC 配送您的商品 AWS PrivateLink
<a name="privatelink"></a>

AWS Marketplace 支持 AWS PrivateLink AWS 服务 ，允许您使用 Amazon 网络为买家提供您销售的商品的访问权限 AWS Marketplace。以下各节概述了使用技术通过亚马逊虚拟私有云 (VPC) 终端节点 AWS PrivateLink 配置和交付产品的流程。

本主题假设您具备多项 AWS 服务和 AWS Marketplace 环境的工作知识。

**Topics**
+ [简介](#introduction)
+ [配置产品](#configuring-your-product)
+ [将您的产品提交至 AWS Marketplace](#submitting-your-product-to-aws-marketplace)
+ [买家访问 VPC 端点](#customer-access-to-vpc-endpoints)
+ [附录：核对清单](#appendix-checklists)

## 简介
<a name="introduction"></a>

 

 作为 AWS Marketplace 卖家，您可以通过 Amazon VPC 终端节点为买家提供访问您的服务的权限。此方法使用 [AWS PrivateLink](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html#what-is-privatelink) 技术，为买家提供在 Amazon 网络上访问您的服务的权限。如果您使用 AWS Marketplace 创建和交付此产品，则买家可以在中发现您的服务 AWS Marketplace。买家还可以在用于创建 VPC 端点的可用服务列表中找到您的产品。

 ![\[Diagram showing AWS PrivateLink connectivity between buyer and seller VPCs. The diagram illustrates how a buyer application in one VPC connects to seller services in another VPC through private endpoints, bypassing the public internet. Blue arrows show the connection flow through interface endpoints to multiple service instances.\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/images/private-endpoint-diagram.png) 

[VPC 终端节点](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html)是一种虚拟设备，它使 AWS 客户能够在其 VPC 与其他 AWS 服务之间创建私有连接，而无需通过 Internet、NAT 设备、VPN 连接或进行访问 Direct Connect。您可以通过创建终端节点服务 AWS Marketplace ，让买家能够使用该技术连接到您的服务。这种连接方法对于买家来说更安全，因为买家是通过 Amazon 专用网络而不是 Inernet 访问您的服务。

对于您希望提供服务的每个区域，您要创建或使用现有资源来配置 VPC，设置服务实例和网络负载均衡器，并通过创建服务端点将服务注册到网络负载均衡器。在完成这些步骤并测试产品之后，您可以将配置信息提供给 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。

AWS 建议您提供一个私有 DNS 名称，供买家在创建 VPC 终端节点时使用。

 买家在创建 VPC 端点时，可以选择启用私有 DNS 名称。通过选择此选项，买家的 VPC 服务将配置一个[私有托管区域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。如果您提供了私有 DNS 名称，买家可以在配置 VPC 端点时使用该名称连接到您的服务。在买家的私有托管区域中，私有 DNS 名称 (api.example.com) 将指向为端点服务创建的随机生成的 DNS 名称 (vpce-11111111111111111-yyyyyyyy.api.vpce.example.com)。买方的 EC2 实例在不同的名称上调用相同的统一 DNS 名称 (api.example.com)。 VPCs此外，如果公有和私有 DNS 名称相同，那么买家在从 VPC 内部或外部访问您的服务时，可以使用相同的公有名称。

如需通过提供服务方面的帮助 AWS Marketplace，您可以联系[AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。当 AWS Marketplace 买家订阅您的服务并创建 VPC 终端节点时，您的服务将显示在**您的 AWS Marketplace 服务**下。 AWS Marketplace 卖家运营团队使用用户友好的 DNS 名称，以便在创建 VPC 终端节点时轻松发现您的服务。

您的产品作为软件即服务 (SaaS) 产品创建。计量和计费与其他 AWS Marketplace SaaS产品相同。

## 配置产品
<a name="configuring-your-product"></a>

配置您的产品使其可通过 Amazon VPC 端点使用：

1. 创建或使用现有 [Amazon VPC](https://aws.amazon.com/documentation/vpc/)。

1. 为您的产品创建（或使用现有）[Amazon EC2](https://aws.amazon.com/documentation/ec2/) 实例。

1. 在您提供产品的每个地区创建[网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/network-load-balancer-getting-started.html)。 AWS 建议您包括某个地区的所有[可用区](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-az.html) (AZs)。

1. 使用 Amazon VPC 控制台、CLI 或支持 SDKs 来创建 VPC 终端节点服务。

1. 验证是否可以通过网络负载均衡器访问该服务。

1. [从 AWS Certificate Manager (ACM) 为您的用户友好型 DNS 名称申请证书](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。ACM 在颁发证书之前，会验证您是否拥有或控制证书请求中的域名。

1. 将您的用户友好型 DNS 名称的子域名（例如 api.vpce.example.com）委托给卖家运营团队提供给您的域名服务器。 AWS Marketplace 在您的 DNS 系统中，您必须创建域名服务器 (NS) 资源记录，将此子域名指向 AWS Marketplace 卖家运营团队提供的亚马逊 Route 53 域名服务器，这样 DNS 名称（例如 vpce-0ac6c347a78c90f8.api.vpce.example.com）才能公开解析。

1. 允许访问您的买家 AWS 账户。

    **注意**：你可以使用支持的软件开发工具包或这个 CLI 命令自动访问账户：aws vpcev2-permissions--service-id vpce modify-vpc-endpoint-service-svc-0123456789abcdef1 — arn: aws: iam:: 111111111111:root arn: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws: aws add-allowed-principals 

## 将您的产品提交至 AWS Marketplace
<a name="submitting-your-product-to-aws-marketplace"></a>

在向发布服务的过程中 AWS Marketplace，您需要与 AWS Marketplace 卖家运营团队合作。要提交 PrivateLink已启用的产品，请执行以下操作：

1. 通过电子邮件将以下信息发送给[AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队：

   1. 终端节点和用于创建终端节点的 AWS 账户。端点类似于：com.amazonaws.vpce.us-east-1.vpce-svc-0daa010345a21646 

   1. 您的服务的用户友好型 DNS 名称。这是 AWS Marketplace 买家用来访问您的产品的 DNS 名称。

   1. 您用于申请证书的 AWS 账户以及购买者用于访问 VPC 终端节点的私有 DNS 名称。

       AWS Marketplace 卖家运营团队会验证贵公司的身份以及用于您正在注册的服务（例如 api.vpce.example.com）的 DNS 名称。验证后，DNS 名称将覆盖默认的基本端点 DNS 名称。

## 买家访问 VPC 端点
<a name="customer-access-to-vpc-endpoints"></a>

AWS Marketplace 创建 VPC 终端节点的买家可以在以下情况下发现您的服务：
+ 您按照此页面前面描述的卖家流程创建了产品或使用现有产品。
+ 买家订阅了您的服务。
+ 您已将买家的 AWS 账户添加到允许的账户列表中。

买家在创建其 VPC 端点时，可以选择将私有托管区域与其 VPC 关联。托管区域包含服务默认私有 DNS 名称的记录集，用于解析到其 VPC 端点网络接口的私有 IP 地址。

任何买家托管的终端节点（包括 AWS Marketplace 服务）都可以为所有账户提供权限（“\$1” 权限）。但是，您在使用此方法时，除非按服务名称进行搜索，否则服务不会包含在 **Describe** 调用或控制台中。要在 Desc **ribe** 调用中显示服务，服务必须将买家的 AWS 账户明确添加到允许列表中。

要访问您的服务，买家需要执行以下操作：

1. 在上发现并订阅您的服务 AWS Marketplace.

1. 使用 AWS Command Line Interface (AWS CLI)、API 或 Amazon VPC 控制台来发现您的服务，然后建立一个 VPC 终端节点以连接到子网中的服务并由 AZs 他们使用。端点在子网中显示为弹性网络接口。将本地 IP 地址、区域以及区域 DNS 名称分配给端点。


|  **客户端 DNS 名称**  |  **名称**  | 
| --- | --- | 
|  区域性   |  Vpce<0dc9a211a78c90f8>.api.vpce.example.com   | 
|  IAD2 (1a)   |   **us-east-1a**-Vpce<0dc9a211a78c90f8>.api.vpce.example.com   | 
|  IAD2 (1b)   |   **us-east-1b**-Vpce<0dc9a211a78c90f8>.api.vpce.example.com   | 

如果您提供了默认的私有 DNS 名称，并且买家在创建 VPC 端点时选择**启用私有 DNS 名称**（与私有托管区域关联），那么买家可以看到区域的默认私有 DNS 名称以连接到您的服务：


|  **名称**  |  **别名**  |  **托管区域别名 ID**  |  **（备注）**  | 
| --- | --- | --- | --- | 
| api.example.com  | vpce<0dc9a211a78c90f8>. api.vpce.example.com  | Z00AABBCCDD  |  IAD1  IAD2   | 

## 附录：核对清单
<a name="appendix-checklists"></a>

在将商品提交给 AWS Marketplace 卖家运营团队之前，请使用以下清单确保对商品进行配置和测试。

### 产品创建核对清单
<a name="product-creation-checklist"></a>
+ 创建（或使用现有的）VPC，然后对其进行配置。
+ 在 VPC 中创建并配置网络负载均衡器。
+ 通过创建 VPC 端点服务，将您的服务注册到网络负载均衡器。
+ 向 AWS Marketplace 卖家运营团队提供您用于配置 VPC 终端节点的 AWS 账户 ID。
+ 向卖家运营团队提供默认终端节点服务名称（例如 com.amazonaws.vpce.us-east-1.vpce-svc-0bb070044a2164）。 AWS Marketplace 
+ 提供用户友好型服务 DNS 名称（必需）来覆盖随机生成的服务 DNS 名称。从 ACM 请求用于用户友好型服务 DNS 名称的子域的 SSL 证书。向 AWS Marketplace 卖家运营团队提供这些证书和您申请证书时使用的 AWS 账户编号。
+ 建议：提供私有 DNS 名称。
+ 创建一个流程，告知 AWS Marketplace 买家并允许他们选择使用 AWS PrivateLink 技术连接到您的服务。将买 IDs 家 AWS 账户添加到允许的账户列表中。

### 产品测试
<a name="product-testing"></a>
+ 验证您的服务是否已配置并且可以找到。
+ 验证您的服务是否可以通过网络负载均衡器找到。
+ 验证买家是否可以创建 VPC 端点并访问您的服务。使用您拥有的 AWS 帐户，该帐户不是您用于设置服务的帐户。

# SaaS 产品问题排查
<a name="troubleshoot-saas"></a>

以下主题阐明了如何在 AWS Marketplace 中排查 SaaS 产品的常见问题和错误消息。

## 常见的 SaaS 错误消息
<a name="common-saas-error-messages"></a>

下表列出了最常见的 SaaS 错误消息及对应的解决方案。


| 错误消息 | 解决方案 | 
| --- | --- | 
| 协议创建失败，原因是卖家存在合规性问题或报价币种在您所在的地区不受支持。请联系卖家，确保其向您提供合适的报价。 |  根据设计机制，AWS Marketplace 禁止卖家购买自己的产品。请使用其他账户，并将相应账户列入您的产品的许可名单中，以便进行测试。 有关更多信息，请参阅 [在中配置 SaaS 产品设置 AWS Marketplace](saas-product-settings.md)。  | 
| 您在过去 120 天内提交过价格上调申请，因此，在 xxx-xx-xxT00:00:00Z 之前无法更新 UsageBasedPricingTerm。 |  您的产品可能拥有有效订阅。由于存在有效订阅，您需要等待生效的变更日期到期后才能修改产品详情。这是确保现有订阅用户的服务连续性的标准程序。 如果您有任何疑问或需要进一步帮助，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。  | 
|  INVALID\$1FULFILLMENT\$1URL 请提供正确格式的履行 URL。以“https://”开头  |  确保 URL 以 `https://` 或 `http://` 开头 验证 URL 的格式和可访问性 在提交之前测试履行端点 正确格式为：[https://your-saas-app.com/fulfillment](https://your-saas-app.com/fulfillment) 有关更多信息，请参阅[在中配置 SaaS 产品设置 AWS Marketplace](saas-product-settings.md)。  | 
| 您没有足够的权限，无法访问此页面。 |  如果您在 AWS Marketplace 管理门户中选择**报价**选项卡时遇到错误，请确保您满足先决条件  有关更多信息，请参阅本指南前面部分[专属优惠常见问题解答](private-offer-faq.md)内容中的*卖家在访问“报价”选项卡时如何解决错误*。  | 
| INVALID\$1MEDIA\$1LOCATION |  确保 Amazon S3 URL 可访问且格式正确 https://s3.amazonaws.com/your-bucket/your-logo.png 徽标要求： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/troubleshoot-saas.html)  | 
| 移除不支持的字符 |  `¦`, `§`, `'`, `—`, `–`, `•` 在产品描述中使用标准的 ASCII 字符 有关更多信息，请参阅本指南前面部分的[为 AWS Marketplace 产品提供元数据](categories-and-metadata.md)。  | 
|  DUPLICATE\$1SELLER\$1ENTITY 此账户已关联卖家实体。  |  检查现有卖家的注册状态 使用 `UpdateSeller` 而非 `CreateSeller` 进行修改 如果重复注册问题仍未解决，请联系 AWS Marketplace 支持团队 有关更多信息，请参阅本指南前面部分的[注册过程](registration-process.md)。  | 
|  SELLER\$1ENTITLEMENT\$1EXISTS 此主体已拥有 AWS Marketplace 中卖家的权限。  |  在 AWS Marketplace 管理门户中验证当前的卖家状态 采用所需的更新操作，而非进行创建 审查 IAM 权限和角色 有关更多信息，请参阅本指南前面部分的[注册过程](registration-process.md)。  | 
|  UNSUPPORTED\$1DELIVERY\$1OPTION 无法将基于 URL 的现有默认 SaaS 产品更新为使用 API 交付选项。  |  为基于 API 的交付创建新产品 基于 URL 和基于 API 的 SaaS 产品无法相互转换 在初始创建之前规划产品架构  | 
|  INCOMPATIBLE\$1DELIVERY\$1OPTION\$1TYPES 您为已包含 `ApiDeliveryOption` 的产品提供了 `SaaSUrlDeliveryOptions`。  |  为不同的交付类型单独创建产品 在创建产品时选择基于 API 交付还是基于 URL 交付 在设置之前审查产品要求  | 