

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

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