AWS Marketplace
针对 AWS Marketplace 提供商的用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Metering Service

AWS Marketplace Metering Service 是一项定价和计量功能,AWS Marketplace 卖家可以使用此功能直接为其软件以及以下四种使用类别之一收费:用户、数据、带宽或主机。该服务可与您基于 AMI 和基于 SaaS 的产品配合使用。使用 Metering Service 的所有基于 AMI 的软件必须满足以下要求:

  • 您的软件必须从 AWS Marketplace 通过 Amazon 系统映像 (AMI) 启动。

  • 如果您在 AWS Marketplace 中已经有产品,则必须提交新 AMI 并创建新产品列表以启用此功能。

  • 所有软件必须预置有 AWS Indentity and Access Management (IAM) 角色。最终客户需要将 IAM 角色添加到用户正在预置软件的 Amazon Elastic Compute Cloud (EC2) 实例。尽管目前 IAM 角色的使用是可选的,但在通过 AWS Marketplace 部署软件时,如果部署的是 AWS Marketplace Metering Service 软件,则 IAM 角色是必需的。

  • 您的软件必须能够以某种方式确定使用情况。

使用 Metering Service 的产品必须按照单个使用类别向客户收费,不过可以定义单个类别的最多 8 个维度。根据所选类别,软件可以按照预置资源、并发资源或累积资源使用来定价。所有费用仍是客户每小时产生的。使用与现有的 AWS Marketplace 软件相同的机制,每月计算一次所有用量并收取一次费用。

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

Metering Service 概念

AWS Marketplace Metering Service 使得软件卖家可以修改其软件,通过向终端节点发送计量记录来捕获使用情况。卖家可以选择使用类别并定义一个类别的最多 8 个维度。这些维度每小时计量一次,并根据卖家定义的价格计划收费。作为卖家,您需要做的第一件事是确定要使用的维度。在 AMI 发布之后,您无法更改它。重要服务概念:

  • 使用类别 – 任何通过使用 Metering Service 定价的软件产品都将选择一个使用类别(依据其对客户收费),包括但不限于:

    • 用户 – 一组与单个标识符关联的定义的权限。此类别适合客户的用户直接连接到软件的软件(例如,客户关系管理或商业智能报告)。

    • 主机 – 任何服务器、节点、实例、终端节点或计算系统的其他部分。此类别适合用于监控或扫描客户拥有的许多实例的软件(例如,性能或安全监控)。

    • 数据 – 存储空间或信息,度量单位为 MB、GB 或 TB。此类别适合批量管理存储的数据或处理数据的软件。

  • 用量单位 – 软件产品将选择对应于选定使用类别的特定用量单位。这通常更加具体,并描述了软件的收费单位。示例包括:

    • NodesHrs(对应于主机类别)、UserHrs(对应于用户类别) 或 GBStored(对应于数据类别)

  • 使用量 – 通过使用 Metering Service 定价的任何软件产品将按照以下三种方法之一对使用量收费:

    • 预置 – 软件允许客户配置特定数量的资源(例如,用户数或固定的带宽量)供使用。每个小时,客户按照预置的功能付费。

    • 并发 – 软件允许任意数量的不同主机或用户连接到软件。每个小时,客户按照访问软件的主机数或用户数付费。

    • 累计 – 软件允许客户使用任意数量的数据,无论是处理还是存储的数据。每个小时,客户为累积的用量付费。

  • 定价 – 通过使用 Metering Service 定价的任意软件产品必须指定单价或者定义最多 8 个维度,每个维度具有自己的价格。

    • 单一维度 – 这是最简单的定价选项。客户按照每资源单位每小时付费,而不考虑大小或量 (例如,每个用户每小时 $0.014,或每台主机每小时 $0.070)。

    • 多个维度 – 在所选使用类别沿不同轴向而异时,此定价选项适用。例如,对于主机监控,可根据主机大小设置不同的价格。或者,对于基于用户的定价,可根据用户的类型(例如,管理员、高级用户和只读用户)设置不同的价格。

  • 计量 – 所有使用量记录为计量事件,每小时记录一次。您的软件必须配置为发送相应的维度和使用量到 AWS Marketplace Metering Service。

为软件定价

在使用 AWS Marketplace Metering Service 为您的软件定价时,您必须先确定使用类别和使用方式。目前,该服务支持 6 种不同的定价方案。只能为您的产品选择其中的一种方案:

  • 预置的用户 (每小时)

  • 并发用户 (每小时)

  • 预置的主机 (每小时)

  • 并发主机 (每小时)

  • 预置的带宽 (每小时)

  • 累计的数据 (每小时)

接下来,您必须决定如何为选定的使用类别定价:

  • 单一价格

  • 多个维度 (最多 8 个)

在 AWS Marketplace 上列出您的产品(在用户指南的此部分中)介绍如何提供维度和定价的客户友好的说明。

示例:具有非线性定价的预置带宽

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

示例:具有多个维度的并发主机

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

在 AWS Marketplace 上列出您的 产品

要利用 Metering Service,您必须创建新的产品列表。如果已在 AWS Marketplace 上列出您的软件,您需要决定提供的新 AWS Marketplace Metering Service 产品是对当前列表的补充,还是替换当前列表以作为向新用户提供的唯一版本。如果您选择替换,将从 AWS Marketplace 中删除现有产品,以使新订阅者无法再使用该产品。现有客户可以继续访问旧产品和实例,但他们可以在方便的时候迁移到新产品。新产品必须使用 AWS Marketplace Metering Service 计量用量,如本指南后面的“修改您的软件以使用 Metering Service”部分中所述。

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

以下定义将帮助您填写 AWS Marketplace Metering Service 产品加载表中的字段。在产品加载表中,这些字段标有灵活使用定价 (FCP) 与将其与小时和月度定价产品区别开来。

  • Title (名称):如果已在 AWS Marketplace 上具有一个列表,并使用 AWS Marketplace Metering Service 添加相同的列表,请在括号中包含 FCP 类别/维度以区分两个列表,例如,“PRODUCT TITLE (Data)”。

  • Pricing Model (定价模型):从下拉列表中选择 Usage (用量)

  • FCP Category (FCP 类别):具有 Usage (用量) 定价组件的付费产品向客户收费时使用的类别。从下拉列表中,选择 Users (用户数)Hosts (主机数)Data (数据)Bandwidth (带宽)

  • FCP Unit (FCP 单位):具有 Usage (用量) 定价组件的付费产品向客户收费时使用的测量单位。根据选定的 FCP 类别,将在下拉列表中显示相应的选项。下表列出了每个类别的有效单位。

类别

有效单位

用户

UserHrs

Host

HostHrs

Data

MB、GB、TB

带宽

Mbps、Gbps

  • FCP Dimension Name (FCP 维度名称):在调用 MeterUsage API 以发送计量记录时使用的名称。可以在账单报告中看到该名称,但由于它不是面向外部的,因此,不需要使用用户友好的名称。名称不能超过 15 个字符,并且只能包含字母数字字符和下划线字符。在设置后,您无法更改该名称。更改名称需要使用新的 AMI。

  • FCP Dimension Description (FCP 维度说明):面向客户的声明,用于描述产品的维度。说明 (例如,每小时的管理员数、预置的每 Mbps 带宽) 不能超过 70 个字符,并且应便于用户理解。在发布产品后,您无法更改该说明。

  • FCP Rate (FCP 费率):该产品的单位软件费用。该字段支持 3 个小数位。

备注:

  • 您不需要填写小时和年度定价字段。

  • 免费试用和年度定价不兼容。

  • 目前,使用集群和 AWS 资源功能的产品无法使用 AWS Marketplace Metering Service。

  • 与其他 AWS Marketplace 产品一样,价格、实例类型或区域更改采用常规的流程。

  • 使用 AWS Marketplace Metering Service 的产品无法转换为其他定价模型,如小时、月度或 BYOL。

  • AWS Marketplace 建议在使用说明或文档中添加 IAM 策略信息。

如果您有任何疑问,请联系 AWS Marketplace 卖家运营团队。

修改您的 软件以使用 Metering Service

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

测量用量

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

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

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

对于每个定价方案,该表描述了每小时测量用量的建议方法:

场景 如何测量
预置的用户

当前的预置用户数 (采样)。

-或-

最大预置用户数 (该小时的测量结果)。

并发用户

当前的并发用户数 (采样)。

-或-

最大并发用户数 (该小时的测量结果)。

-或-

不同用户的总数 (该小时的测量结果)。

预置的主机

当前的预置主机数 (采样)。

-或-

最大预置主机数 (该小时的测量结果)。

并发主机

当前的并发主机数 (采样)。

-或-

最大并发主机数 (该小时的测量结果)。

-或-

不同主机的总数 (该小时的测量结果)。

预置的带宽

当前的预置带宽设置 (采样)。

-或-

最大预置带宽 (该小时的测量结果)。

累计的数据

当前存储的数据量 (GB) (采样)。

-或-

存储的最大数据量 (GB) (该小时的测量结果)。

-或-

在该小时添加或处理的总数据量 (GB)。

-或-

在该小时处理的总数据量 (GB)。

调用 AWS Marketplace Metering Service

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

在您的软件启动时,它应该记录每小时的启动时间。这称为启动时刻。在每小时的启动时刻,您的软件必须检索该小时的用量值

并调用 Metering Service。有关如何获取此值的信息,请参阅“测量用量”部分。

要在每小时的启动时刻唤醒,您的软件需要使用以下三种方法之一:

  1. 您的软件中的线程。

  2. 随实例或软件启动的守护程序进程。

  3. 在应用程序启动期间配置的 cron 作业。

    注意

    您的软件必须使用在客户的实例上配置的 IAM 角色调用 AWS Marketplace Metering Service,并指定使用维度和数量。

您的软件可以使用 AWS 开发工具包调用 AWS Marketplace Metering Service,具体方式与本示例实施类似

  1. 使用实例配置文件创建服务客户端。这需要使用为 EC2 实例配置的角色。

该开发工具包自动刷新角色凭证。

AmazonMeteringService meteringClient = new AmazonMeteringService(new InstanceProfileCredentialsProvider());

  1. 每小时读取一次您的软件配置和状态,以确定该小时的用量值。这可能包括收集每个维度的值。

  2. 在开发工具包客户端,使用以下参数调用 meterUsage 方法(为每个具有用量的维度额外调用一次):

    • timestamp:记录的小时时间戳。(使用 UTC。)

    • productCode:分配给软件的产品代码。

    • dimension:分配给软件的维度。

    • quantity:该小时的用量值

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

在将计量记录发送到该服务时,您必须连接到您的区域中的 AWS Marketplace Metering Service。可以使用 getCurrentRegion() 帮助程序方法确定运行您的 EC2 实例的区域,然后将该区域信息传递到 MeteringServiceClient 构造函数。如果未在开发工具包构造函数中指定区域,则默认为 us-east-1 区域。如果您的应用程序尝试对该服务进行跨区域调用,将拒绝该应用程序。有关更多信息,请参阅确定应用程序的当前区域getCurrentRegion()

有关故障处理的重要信息

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

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

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

限制

在设计和提交支持 Metering Service 的软件时,请务必记住以下限制:

  1. 客户的 IAM 角色和 Internet 网关要求 – 您的客户必须拥有 Internet 网关,并且必须使用带特定权限的 IAM 角色启动软件。有关设置 IAM 权限的信息,请参阅AWS Marketplace 计量和权限服务 API 权限。如果未满足这两个条件,则您的软件将无法连接到 Metering Service。

  2. 无法将新的使用类别或维度添加到现有 Metering Service 产品,也无法更改这些类别或纬度 – 一旦客户订阅您的软件产品,即表示他们同意条款和条件。使用 Metering Service 更改产品中的维度需要新产品和新订阅。

  3. 缺少免费试用和年度订阅 – Metering Service 产品在启动时将不支持免费试用和年度订阅。

  4. 多实例或基于集群的部署注意事项 – 一些软件将作为多实例部署的一部分部署。在设计您的软件时,请考虑测量用量的方式和位置以及发出计量记录的位置。

常见问题

可将多少个使用类别用于账单?

每个部署堆栈一个.您必须选择用户、主机、带宽或数据。

支持哪些类型的定价方案?

AWS Marketplace Metering Service 支持预配置资源、并发资源或累积资源用量方案。

在启动时支持哪些定价方案?

最初支持 6 种定价方案:预配置的用户/小时、并发用户/小时、预配置的带宽/小时、预配置的主机/小时、并发主机/小时和累积数据/小时。

使用类别可包含多少维度?

最多 8 个。

Metering Service 产品是否需要订阅?

是的。与所有 AWS Marketplace 软件产品一样,客户必须先订阅产品,然后才能启动 AMI。

Metering Service 产品是否支持一键式操作?

不支持。由于 Metering Service 产品必须通过 IAM 角色启动,因此,它们不受 AWS Marketplace 一键式操作的支持。

客户是否能在没有 Internet 网关的情况下在私有 VPC 中使用 Metering Service 产品?

不能。这些产品必须有权访问 Metering Service,它具有位于公共 Internet 上的终端节点。客户必须配置其 VPC 以允许从产品到公共 Internet 的出站 HTTPS 连接。

我的软件如何确定客户是否具有对我的产品的有效订阅?

要确定客户是否具有对您的产品的有效订阅,请在布尔字段 dryRun 设置为 true 时发出请求。

用于测试的 API 调用与用于已发布产品的 API 调用之间是否存在差异?

是的。您可以在将 AMI 提交到 AWS Marketplace 用于生产之前,测试使用 AWS Marketplace 计量功能的产品的 API 调用,但这两个调用并不相同。在测试时,您可以使用 IAM 用户凭证进行身份验证。必须使用已附加到实例的 IAM 角色从 Amazon EC2 实例调用非测试(已发布)产品。由于这可能是一种用于测试 API 的冗长方法,因此,我们提供了一种机制,可将卖家账户列入白名单并测试产品代码,以便您能够从桌面(使用 IAM 凭证)进行 API 调用。测试调用和生产调用之间的区别在于,AWS Marketplace 使用 IAM 用户凭证为直接 API 调用将测试账户和测试产品代码列入白名单。您的调用不必来自 EC2 实例。这将加快测试速度。您可以测试生产身份验证体验,方法是启动一个 EC2 实例,并使用 EC2Role 凭证而非 IAM 用户凭证进行计量。