

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

# 使用 AWS Marketplace Metering Service 对 AMI 产品进行自定义计量定价
<a name="custom-metering-pricing-ami-products"></a>

借助 AWS Marketplace Metering Service，您可以修改您的软件，通过向端点发送计量记录来捕获使用情况。您可以选择使用类别并为该类别最多定义 24 个维度。这些维度每小时计量一次，进行汇总，并根据您定义的价格计划收费。作为卖家，您首先必须确定要使用的维度。在 AMI 发布之后，您无法更改它。以下各节提供有关 AWS Marketplace Metering Service 的信息。

**Topics**
+ [Metering Service 概念](#metering-service-concepts)
+ [为软件定价](#pricing-your-software)
+ [将您的产品添加到 AWS Marketplace](#listing-your-product-on-aws-marketplace)
+ [修改您的软件以使用 Metering Service](#modifying-your-software-to-use-the-metering-service)
+ [供应商计量标记（可选）](#ami-vendor-metered-tagging)
+ [配置自定义计量](#configure-custom-metering)
+ [使用 AMI 产品配置自定义计量 AWS Marketplace Metering Service](custom-metering-with-mp-metering-service.md)

## Metering Service 概念
<a name="metering-service-concepts"></a>

在使用 AWS Marketplace Metering Service 之前，请注意以下重要的服务概念：
+  **使用类别** – 任何通过使用 Metering Service 定价的软件产品都根据一个使用类别进行分类，该类别决定了向客户收费的相应方式。使用类别包括但不限于：
  + **用户** – 一组与单个标识符关联的定义的权限。此类别适合客户的用户直接连接到软件的软件（例如，客户关系管理或商业智能报告）。
  + **主机** – 任何服务器、节点、实例、端点或计算系统的其他部分。此类别适合用于监控或扫描客户拥有的许多实例的软件（例如，性能或安全监控）。
  + **数据** – 存储空间或信息，度量单位为 MB、GB 或 TB。此类别适合批量管理存储的数据或处理数据的软件。
  + **带宽** – 以 Mbps 或 Gbps 为单位。此类别适用于允许客户指定要配置的带宽量的软件。
  + **单位** - 度量单位；请参阅下面介绍的示例。
+  **用量单位** –对应于选定使用类别的软件产品特定用量单位。用量单位描述了软件的收费单位。示例包括：
  + **NodesHrs**（对应于 “主机” 类别）
  + **UserHrs**（对应于 “用户” 类别）
  + **GBStored**（对应于数据类别）
+  **用量** - 通过使用 Metering Service 定价的软件产品将按照以下三种方法之一对用量收费：
  + 预置 – 软件允许客户配置特定数量的资源（例如，用户数或固定的带宽量）供使用。每个小时，客户按照预置的功能付费。
  + 并发 – 软件允许任意数量的不同主机或用户连接到软件。每个小时，客户按照访问软件的主机数或用户数付费。
  + 累计 – 软件允许客户使用任意数量的数据，无论是处理还是存储的数据。每个小时，客户为累积的用量付费。
+  **定价** – 使用 Metering Service 进行定价的软件产品必须指定单价或者最多定义 24 个维度，每个维度具有自己的价格。有关定价选项的详细信息包括：
  + 单一维度 – 这是最简单的定价选项。客户按照每资源单位每小时付费，而不考虑大小或量 (例如，每个用户每小时 \$10.014，或每台主机每小时 \$10.070)。
  + 多个维度 – 在所选使用类别沿不同轴向而异时，此定价选项适用。例如，对于主机监控，可根据主机大小设置不同的价格。或者，对于基于用户的定价，可根据用户的类型（例如，管理员、高级用户和只读用户）设置不同的价格。
+  **计量** – 所有用量记录为计量事件，每小时记录一次。您的软件必须配置为发送相应的维度和用量到 AWS Marketplace Metering Service。
  + 分配 – 或者，您可以按您跟踪的属性将用量分发到分配中。这些分配以标签形式呈现给买家。这些标签允许买家按标签查看用量成本。例如，如果您按用户收费，并且用户具有“部门”属性，则可以使用键为“部门”的标签创建使用分配，每个值一个分配。这种方法不会更改您报告的价格、维度或总用量。但是，它允许您的客户按您产品的相应类别查看成本。

## 为软件定价
<a name="pricing-your-software"></a>

在使用 AWS Marketplace Metering Service 为您的软件定价时，您必须先确定使用类别和使用方式。该服务支持 6 种不同的定价方案。只能为您的产品选择其中的一种方案：
+ 预置的用户（每小时） 
+ 并发用户（每小时） 
+ 预置的主机（每小时） 
+ 并发主机（每小时） 
+ 预置的带宽（每小时） 
+ 累计的数据（每小时） 

接下来，您必须决定如何为选定的使用类别定价：
+ 单一价格 
+ 多个维度（最多 24 个） 

[将您的产品添加到 AWS Marketplace](#listing-your-product-on-aws-marketplace) 介绍如何提供维度和定价的客户友好的描述。

### 示例：具有非线性定价的预配置带宽
<a name="example-provisioned-bandwidth-with-non-linear-pricing"></a>

假设您提供网络设备软件。您选择按预置的带宽计费。对于您的使用类别，请选择**带宽**。除了按带宽收费以外，您还希望随着买家用量的增加按不同的价格收费。您可以在带宽类别中定义多个维度。您可以为 25 Mbps、100 Mbps 和 1 Gbps 定义不同的价格。

### 示例：具有多个维度的并发主机
<a name="example-concurrent-hosts-with-multiple-dimensions"></a>

假设您提供用于监控其他 Amazon EC2 实例的软件。您选择按监控的主机数计费。对于您的使用类别，请选择**主机**。除了按主机收费以外，您还希望对监控较大的主机收取额外的费用。您可以在主机类别中使用多个维度。您可以为微型、小型、中型、大型、XL、2XL、4XL 和 8XL 实例定义不同的价格。您的软件负责将每个特定的主机映射到某个定义的维度。您的软件负责为每个使用类别维度发送单独的计量记录 (如果适用)。

## 将您的产品添加到 AWS Marketplace
<a name="listing-your-product-on-aws-marketplace"></a>

要利用计量服务，您必须创建要发布的新 AWS Marketplace 商品。如果您的产品已上线 AWS Marketplace，则需要决定是否在当前产品之外推出新的 AWS Marketplace Metering Service 产品，或者它是否将取代您当前的产品作为唯一可供新用户使用的版本。如果您选择换货，则现有商品将从中移除， AWS Marketplace 因此新买家将无法再购买该商品。现有客户可以继续访问旧产品和实例，但他们可以在方便的时候迁移到新产品。新产品必须使用 AWS Marketplace Metering Service 来计量用量，如[修改您的软件以使用 Metering Service](#modifying-your-software-to-use-the-metering-service)中所述。

在具有 AMI 后，请使用自助服务工具按照标准流程共享和扫描您的 AMI。此外，还要使用在管理门户上提供的模板填写产品加载表，并上传该表格以启动提取过程。

使用以下定义来完成 AWS Marketplace Metering Service 的产品加载表单的字段。在产品加载表中，这些字段标有**灵活使用定价 (FCP)** 与将其与小时和月度定价产品区别开来。
+  **标题** — 如果您已经有商品 AWS Marketplace 并且要添加相同的商品 AWS Marketplace Metering Service，请在括号中加上 FCP 类别和维度以区分它们（例如，“产品标题（数据）”）。
+  **定价模式** – 从下拉列表中选择**用量**。
+  **FCP 类别** – 针对具有**用量**定价组件的付费产品向客户收费时使用的类别。从下拉列表中，选择**用户数**、**主机数**、**数据**或**带宽**。
+  **FCP 单位** – 具有**用量**定价组件的付费产品向客户收费时使用的测量单位。根据选定的 FCP 类别，将在下拉列表中显示相应的选项。下表列出了每个类别的有效单位。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/marketplace/latest/userguide/custom-metering-pricing-ami-products.html)
+  **FCP 维度名称** – 在调用 `MeterUsage` API 以发送计量记录时使用的名称。此名称会显示在账单报告中。但是，由于名称不是面向外部的，因此名称不必考虑用户理解。名称不能超过 15 个字符，并且只能包含字母数字字符和下划线字符。设置名称并公开产品后，无法对其进行更改。更改名称需要使用新的 AMI。
+  **FCP 维度说明** – 面向客户的声明，用于描述产品的维度。描述不能超过 70 个字符，并且应便于用户理解。描述示例包括：管理员每小时和预置的每 Mbps 带宽。在发布产品后，您无法更改该描述。
+  **FCP 费率** – 该产品的单位软件费用。该字段支持 8 个小数位。

**备注：**  
您不需要填写小时和年度定价字段。
免费试用和年度定价不兼容。
使用 AMI、集群和 AWS 资源功能的产品不能使用 AWS Marketplace 计量服务。
价格、实例类型或 AWS 区域 变更将遵循与其他 AWS Marketplace 产品相同的流程。
使用 AWS Marketplace Metering Service 的产品无法转换为其他定价模式，如小时、月度或 自带许可 (BYOL)。
AWS Marketplace 建议在您的使用说明或文档中添加 IAM 政策信息。
您最多可包含 24 个FCP 维度。创建并发布后，您无法修改现有维度，但可以添加新维度（最多 24 个）。

如果您有任何疑问，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us/)团队。

## 修改您的软件以使用 Metering Service
<a name="modifying-your-software-to-use-the-metering-service"></a>

您需要修改您的软件以记录客户用量，将小时用量报告发送到 Metering Service 并处理新的故障模式。该软件的运行方式与定价无关，但该软件需要了解使用类别、使用方式以及任何维度。

### 测量用量
<a name="measuring-consumption"></a>

您的软件必须确定选定使用类别的用量以及客户使用的维度。该值将发送到 Metering Service（每小时一次）。在所有情况下，假定您的软件能够测量、记录和读取资源用量，以便每小时将其发送到 Metering Service 一次。

对于预置使用，通常从软件配置中将其作为采样值读取，但也可能是每小时记录一次的最大配置值。对于并发使用，这可能是定期样本或每小时记录一次的最大值。对于累计使用，这是每小时累计的值。

对于多个维度的定价，必须测量多个值并将其发送到 Metering Service (每个维度一个)。在提供 AMI 时，这要求为您的软件编写或配置一组已知的维度。在创建产品后，无法更改这组维度。

对于每个定价方案，下表描述了每小时测量用量的建议方法。


|  **场景**  |  **如何测量**  | 
| --- | --- | 
|  预配置的用户   |  当前的预置用户数 (采样)。 - 或者 -  最大预置用户数 (该小时的测量结果)。  | 
|  并发用户   |  当前的并发用户数 (采样)。 - 或者 -  最大并发用户数 (该小时的测量结果)。 - 或者 -  不同用户的总数 (该小时的测量结果)。  | 
|  预配置的主机   |  当前的预置主机数 (采样)。 - 或者 -  最大预置主机数 (该小时的测量结果)。  | 
|  并发主机   |  当前的并发主机数 (采样)。 - 或者 -  最大并发主机数 (该小时的测量结果)。 - 或者 -  不同主机的总数 (该小时的测量结果)。  | 
|  预配置的带宽   |  当前的预置带宽设置 (采样)。 - 或者 -  最大预置带宽 (该小时的测量结果)。  | 
|  累计的数据   |  当前存储的数据量 (GB) (采样)。 - 或者 -  存储的最大数据量 (GB) (该小时的测量结果)。 - 或者 -  在该小时添加或处理的总数据量 (GB)。 - 或者 -  在该小时处理的总数据量 (GB)。  | 

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

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

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

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

### 卖家体验
<a name="ami-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

验证包括：
+ 标签键和值允许使用的字符 — a-zA-Z 0-9\$1-= 。 \$1:\$1 /@
+ `UsageAllocation` 列表中的最大标签数 – 5
+ 两个 `UsageAllocations` 的标签不能相同（也就是说，标签键和值的组合相同）。如果是这样的话，他们必须使用相同的 `UsageAllocation`。
+ `UsageAllocation` 的 `AllocatedUsageQuantity` 之和必须等于 `UsageQuantity`，即聚合用量。

### 买家体验
<a name="ami-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 | 市场营销 | 

有关代码示例，请参阅 [带有用量分配标签的 `MeterUsage`（可选）](custom-metering-with-mp-metering-service.md#ami-meterusage-code-example)。

## 配置自定义计量
<a name="configure-custom-metering"></a>

有关使用 AWS Marketplace Metering Service 的更多信息，请参阅[使用 AMI 产品配置自定义计量 AWS Marketplace Metering Service](custom-metering-with-mp-metering-service.md)。

# 使用 AMI 产品配置自定义计量 AWS Marketplace Metering Service
<a name="custom-metering-with-mp-metering-service"></a>

**注意**  
对于采用自定义计量定价的基于 AMI 的产品，您的软件必须使用附加到亚马逊 EC2 实例的 Amazon Elastic Compute Cloud 的 IAM 角色的临时 AWS 证书调用 [MeterUsage API](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_MeterUsage.html)。不支持使用长期访问密钥。

AWS Marketplace Metering Service 是一项定价和计量功能，您可以利用它根据使用类别直接为其软件收费。有五种使用类别：用户、数据、带宽、主机或单元。您可以将 Metering Service 与基于亚马逊机器映像 (AMI)、基于容器和基于软件即服务 (SaaS) 的产品配合使用。以下各节提供有关如何使用 AWS Marketplace Metering Service 配置自定义计量的信息。

使用 AWS Marketplace Metering Service 可以启用多种新方案。例如，如果您的软件监控主机，则您可以对监控的每个主机收费。您可以根据主机大小制定不同价格，并根据每小时监控的并发主机数量收费。与此类似，如果软件允许组织中的多个用户登录，您可以按用户数收费。每小时，将针对预配置的总用户数对客户收取一次费用。

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

有关将基于 AMI 的产品 AWS Marketplace Metering Service 的 API 与自定义计量定价集成的更多信息，请参阅*AWS Marketplace 卖家研讨*会的[列出按定制单位定价的 AMI 产品](https://catalog.workshops.aws/mpseller/en-US/ami/list-ami-custom-units)实验室。

**Topics**
+ [要求](#metering-service-requirements)
+ [调用 AWS Marketplace Metering Service](#call-aws-marketplace-metering-service)
+ [故障处理](#important-information-about-failure-handling)
+ [限制](#limitations)
+ [代码示例](#ami-metering-code-example)

## 要求
<a name="metering-service-requirements"></a>

使用 Metering Service 的所有基于 AMI 的软件必须满足以下要求：
+ 您的软件必须 AWS Marketplace 通过亚马逊系统映像 (AMI) 启动。
+ 如果您有现有产品 AWS Marketplace，则必须提交新的 AMI 并创建新产品才能启用此功能。
+ 所有软件都必须使用 AWS Identity and Access Management (IAM) 角色进行配置。最终客户必须将 IAM 角色添加到用户正在预置软件的 Amazon Elastic Compute Cloud (Amazon EC2) 实例。通过部署软件时，使用 IAM 角色是可选的 AWS Marketplace。部署 AWS Marketplace Metering Service 软件时，这是必需的。
+ 您的软件必须能够以某种方式确定使用情况。

## 调用 AWS Marketplace Metering Service
<a name="call-aws-marketplace-metering-service"></a>

 您的软件必须每小时调用一次 Metering Service，并记录该小时的用量值。

 当你的软件启动 minute-of-the-hour时，它应该记录它的启动时间。这称为*启动时刻*。在每小时的启动时刻，您的软件必须确定该小时的用量值并调用 Metering Service。有关如何获取此值的信息，请参阅[修改软件以使用 Metering Service](https://docs.aws.amazon.com/marketplace/latest/userguide/custom-metering-pricing-ami-products.html#modifying-your-software-to-use-the-metering-service)。

 要在每小时的启动时刻唤醒，您的软件必须使用以下方法之一：
+  您的软件中的线程。
+  随实例或软件启动的进程守护程序。
+  在应用程序启动期间配置的 cron 作业。
**注意**  
 您的软件必须使用在客户的实例上配置的 IAM 角色调用 AWS Marketplace Metering Service，并指定使用维度和数量。

您的软件可以使用软件 AWS 开发工具包调用 AWS Marketplace 计量服务，类似于以下示例实现：

1. 使用实例配置文件创建服务客户端。这需要使用为 EC2 实例配置的角色。该开发工具包自动刷新角色凭证。

1. 每小时读取一次您的软件配置和状态，以确定该小时的用量值。这可能包括收集 value-per-dimension.

1. 在开发工具包客户端，使用以下参数调用 `meterUsage` 方法（为每个具有用量的维度额外调用一次）：
   + `timestamp` – 记录的小时时间戳（UTC）。
   + `productCode` – 分配给软件的产品代码。
   + `dimension` – 分配给软件的维度。
   + `quantity` – 该小时的用量值。
   + `allocations` –（可选）您可以为所跟踪的属性的用量提供分配。这些分配必须与记录中的总消耗量相加。对于买家来说，这些标签在他们的计费工具（例如 AWS 账单与成本管理 控制台）中显示为潜在的成本分配标签。买家必须激活其账户中的标签才能使用这些标签追踪成本。

此外，您的软件还必须调用区域中的 AWS Marketplace Metering Service 端点。您的产品必须设置了正确的区域端点，以便 `us-east-1` 将记录发送到 `us-east-1` 端点，`us-west-2` 将记录发送到 `us-west-2` 端点。进行区域中调用为买家提供更稳定的体验，并防止存在不相关的区域而可能影响在其他区域中运行的软件。

在将计量记录发送到该服务时，您必须连接到您的区域中的 AWS Marketplace Metering Service。使用 `getCurrentRegion()` 帮助程序方法确定 EC2 实例运行的区域，然后将此区域信息传递给 `MeteringServiceClient` 构造函数。如果您未在 SDK 构造函数 AWS 区域 中指定，则使用默认`us-east-1`区域。如果您的应用程序尝试对该服务进行跨区域调用，将拒绝调用。有关更多信息，请参阅[确定应用程序的当前区域](https://java.awsblog.com/post/Tx3GBOIEN1JJMQ5/Determining-an-Application-s-Current-Region)和 [getCurrentRegion()](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/regions/Regions.html#getCurrentRegion())。

## 故障处理
<a name="important-information-about-failure-handling"></a>

您的产品必须将计量记录发送到该服务 (公有 Internet 端点)，以便可以捕获该用量和进行计费。由于客户可能使用某种方式修改网络设置而导致无法传送您的计量记录，您的产品应选择一个故障模式以处理这种情况。

**注意**  
某些计量失败可能是连接时出现的暂时性问题 AWS Marketplace Metering Service。 AWS Marketplace 强烈建议实施最长 30 分钟的重试，并以指数级退缩，以避免短期中断或网络问题。

通常，软件可能在发生故障时打开 (提供一条警告消息，但保留完整功能) 或在发生故障时关闭 (在应用程序中禁用所有功能，直到重新建立连接)。您可以选择在发生故障时打开、在发生故障时关闭或您的应用程序特定的模式。在发生计量故障两小时后内，强烈建议您禁止在发生故障时关闭。

例如，如果在发生故障时部分打开，您可以继续允许访问软件，但不允许买家修改软件设置。或者，买家仍然可以访问软件，但无法创建额外的用户。您的软件负责定义和实施该故障模式。在提交您的 AMI 时，必须包含您的软件的故障模式，以后无法对其进行更改。

## 限制
<a name="limitations"></a>

 在设计和提交支持 Metering Service 的软件时，请务必记住以下限制：
+ **客户的 IAM 角色和互联网网关要求** - 您的客户必须拥有互联网网关，并且必须使用带特定权限的 IAM 角色启动软件。有关更多信息，请参阅 [AWS Marketplace 计量和授权 API 权限](iam-user-policy-for-aws-marketplace-actions.md)。如果未满足这两个条件，则您的软件无法连接到 Metering Service。
+  **无法将新的使用类别添加到现有 Metering Service 产品，也无法更改这些类别** - 一旦客户订阅您的软件产品，即表示他们同意条款和条件。使用 Metering Service 更改产品中的使用类别需要新产品和新订阅。
+ **无法将新的维度添加到现有 Metering Service 产品，也无法更改这些纬度** - 一旦客户订阅您的软件产品，即表示他们同意条款和条件。使用 Metering Service 更改产品中的维度需要新产品和新订阅。您*可以*为现有产品添加新维度，上限为 24 个。
+  **缺少免费试用和年度订阅** - Metering Service 产品在启动时不支持免费试用和年度订阅。
+  **多实例或基于集群的部署注意事项** - 一些软件将作为多实例部署的一部分部署。在设计您的软件时，请考虑测量用量的方式和位置以及发出计量记录的位置。

## 代码示例
<a name="ami-metering-code-example"></a>

以下代码示例旨在帮助您将 AMI 产品与发布和维护产品 AWS Marketplace APIs 所需的产品集成。

### 带有用量分配标签的 `MeterUsage`（可选）
<a name="ami-meterusage-code-example"></a>

以下代码示例与具有消费定价模式的 AMI 产品相关。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

# Import AWS Python SDK
import boto3
import time

usageRecord = [
    { 
        "AllocatedUsageQuantity": 2, 
        "Tags": 
            [ 
                { "Key": "BusinessUnit", "Value": "IT" },
                { "Key": "AccountId", "Value": "123456789" },
            ]

    },
    { 
        "AllocatedUsageQuantity": 1, 
        "Tags": 
            [ 
                { "Key": "BusinessUnit", "Value": "Finance" },
                { "Key": "AccountId", "Value": "987654321" },
            ]

    }
]

marketplaceClient = boto3.client("meteringmarketplace")

response = marketplaceClient.meter_usage(
    ProductCode="testProduct",
    Timestamp=int(time.time()),
    UsageDimension="Dimension1",
    UsageQuantity=3,
    DryRun=False,
    UsageAllocations=usageRecord 
)
```

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

### 响应示例
<a name="ami-meterusage-code-response"></a>

```
{ "MeteringRecordId": "string" }
```