使用 AWS Marketplace 计量服务为集装箱产品定制计量 - AWS Marketplace

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

使用 AWS Marketplace 计量服务为集装箱产品定制计量

AWS Marketplace 集装箱产品可以对每种产品多达 24 种不同的定价维度进行自定义计量。每个维度都可以具有与之相关的长期合同价格。要启用自定义计量,请将您的容器产品与 AWS Marketplace 计量服务集成。您可以为该使用量定义自己的定价单位和自定义计量,以便使用该MeterUsageAPI操作 AWS 进行计费。

价格维度在两个位置定义,一次是在产品加载表单中,一次是通过 MeterUsage API 操作。此双因素方法可确保后续的产品在向公众提供之前按预期工作。

要设置自定义计量,您需要选择使用类别、单位类型和定价维度:

  • 用户类别 - 用户类别可帮助买家了解您的产品是什么以及如何使用它。

  • 单位类型 - 单位类型定义计费的计量单位。例如,以GBps或为单位的带宽MBps、以主机数量为单位的带宽,或者以 MB、GB 或 TB 为单位的数据。

  • 定价维度-定价维度表示您为其设置了单位价格的功能或服务(例如,用户vCPUs、扫描或部署的代理)。定价维度是公开的。但是,您仍然可以为公共产品定义私有和自带许可证 (BYOL) 优惠。请勿在计量记录中发送定价。您可以计量单位数量,我们将其与您在创建产品时定义的价格一起使用,以计算买家的账单。

    如果您的产品定价不符合任何预定义类别或单位类型,您可以选择通用单位类别。然后,使用维度描述来描述单位是什么。

或者,您可以按您跟踪的属性将用量分发到分配中。分配以标签形式呈现给买家。这些标签允许买家按标签值查看按用量划分的费用。例如,如果您按用户收费,并且用户具有“部门”属性,则可以使用键为“部门”的标签创建使用分配,每个值一个分配。这不会更改您报告的价格、维度或总用量,但允许您的客户按与您的产品相应类别查看其成本。

我们建议您每小时发送一次计量记录。但是,您也可以汇总每日或每月的用量。如果您遇到中断,您可以聚合买家的软件用量,并在接下来的小时计量中发送。每小时不能发送多条记录。

重要

免费试用和预付费权利按小时进行跟踪。因此,单独发送这些记录可能会导致买家被多收费用。

自定义计量先决条件

发布产品之前,您必须首先完成以下操作:

  1. 在中创建新的容器产品 AWS Marketplace 管理门户,并记下其产品代码。

  2. 填写产品加载表单以及必要的维度信息,并将其返回给我们进行处理。

  3. 为运行应用程序的任务或 Pod 使用 AWS Identity and Access Management (IAM) 角色,并具有调用所需的IAM权限MeterUsage。IAM托管策略AWSMarketplaceMeteringRegisterUsage具有这些权限。

  4. (可选)如果您想查看 AWS CloudTrail 日志记录,我们建议您在任务或 pod 定义中启用日志记录。

  5. 使用您定义的所有定价维度的记录对MeterUsageAPI操作进行测试调用。

自定义计量的产品加载表单

填写产品加载表单进行自定义计量时,每种产品最多可以有 24 个维度。维度在以下字段中定义:

  • 唯独名称 – 容器应用程序将计量记录发送到 AWS Marketplace Metering Service时使用的名称。此名称指示买家将使用的维度。此名称会显示在账单报告中。名称一旦设置便无法更改。

  • 维度描述 – 维度的面向买家的描述。描述不能超过 70 个字符。产品向买家公开发布后,此字段无法更改。

  • 维度费率 – 当买家按需支付费用时,此产品的单位软件价格。该字段支持三个小数位数。

  • 维度长期费率 – 买家预先付款时,长期合同中的软件总价格。

  • 长期期限(天) - 长期合同的期限(以天为单位)。

测试 MeterUsage 集成和预览模式

在将图片提交给发布之前,请使用该MeterUsage操作来 AWS Marketplace 测试您的集成。

预览模式的运行方式与生产模式完全相同,但预览模式不验证对您的产品的使用权。要以预览模式调MeterUsageMeterUsage,请在亚马逊弹性容器服务 (亚马逊ECS) 或亚马逊 Elastic Kubernetes Service (Amazon) 上运行您的EKS商品,并使用您用于发布商品的容器镜像 AWS 账户 进行调用。 AWS Marketplace您的计量集成必须动态设置 AWS 区域,而不是对其进行硬编码。但是,在测试时,请至少在美国东部(弗吉尼亚北部)地区启动一个包含您的付费容器的 Amazon ECS 任务或 Amazon EKS pod,以便 AWS Marketplace 运营团队可以使用该地区的日志验证您的工作。

注意
  • 如果您的产品同时支持亚马逊ECS和亚马逊EKS,您只需要在亚马逊EKS上线,我们就可以验证您的集成。

  • 在向公众发布产品之前和添加新维度之后,对每个维度进行测试。如果您没有为与集装箱产品关联的每个维度发送计量记录,则会导致错误并导致请求失败。

在使用所有必需的元数据和定价信息发布您的产品之前,您无法完全测试集成。如果需要, AWS Marketplace 目录运营团队可以在预览模式下验证是否收到您的计量记录。

MeterUsage 中的错误处理

如果您的容器映像与 MeterUsage 操作集成并在容器启动时收到 ThrottlingException 之外的异常,您应终止容器以防止未经授权的使用。

仅在初始调用 MeterUsage 时引发 ThrottlingException 以外的异常。CustomerNotSubscribedException即使客户在ECS任务或 EKS Pod 仍在运行时取消订阅,来自同一 Amazon 任务或 Amazon Pod 的后续调用也不会抛出。这些客户在取消订阅并跟踪其使用情况后仍需支付运行容器的费用。

有关常见错误MeterUsage的详细说明,请参阅 “AWS Marketplace Metering Service API参考资料MeterUsage。每种 AWS SDK编程语言都有一套错误处理指南,您可以参考这些指南以获取更多信息。

供应商计量标记(可选)

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

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

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

卖家体验

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

在下图中,资源 1 具有一组唯一的 AccountIdBusinessUnit 标签,并作为单个条目出现在计量记录中。

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

Metering record showing resource usage allocation from three resources to two accounts.

卖家还可以将没有标签的资源组合成一个包含分配用量的 UsageAllocation,然后将其作为 UsageAllocations 中的一个条目发送。

限制包括:

  • 标签数 – 5

  • UsageAllocations(基数)的大小 – 2500

验证包括:

  • 标签键和值允许的字符 – a-zA-Z0-9+ -=._:\/@

  • UsageAllocation 列表中的最大标签数 – 5

  • 两个 UsageAllocations 的标签不能相同(也就是说,标签键和值的组合相同)。如果是这样的话,他们必须使用相同的 UsageAllocation

  • UsageAllocationAllocatedUsageQuantity 之和必须等于 UsageQuantity,即聚合用量。

买家体验

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

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

成本使用报告的第一行和最后一行与卖家向 Metering Service 发送的内容相关(如 卖家体验 示例所示)。

成本使用报告(简化)
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 代码示例(可选)

代码示例

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

带有用量分配标签的 MeterUsage 代码示例(可选)

以下代码示例与具有消费定价模式的容器产品相关。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 Metering Service API参考MeterUsage中的。

响应示例

{ "MeteringRecordId": "string" }