使用 AWS Marketplace Metering Service 按小时计量 - AWS Marketplace

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

使用 AWS Marketplace Metering Service 按小时计量

如果您的容器产品使用每小时每任务或每容器组 (pod) 定价,而不是自定义计量定价维度,则无需定义自定义计量维度。

RegisterUsageAPI 操作每 Amazon Elastic Container Service (Amazon ECS) 任务或 Amazon Elastic Kubernetes Service (Amazon EKS) 容器组 (pod) 每小时计量软件使用情况,用量按比例计算到秒。最低 1 分钟用量适用于有效期较短的任务或 pod。软件使用的持续计量由 AWS Marketplace Metering Control Plane 自动处理。除了调用 RegisterUsage 一次以启动软件使用的计量外,您的软件无需执行任何计量特定操作。

RegisterUsage 必须在启动容器时立即调用。如果您在容器启动后的前 6 个小时内没有注册容器,AWS Marketplace Metering Service 将不为前几个月提供任何计量保证。但是,计量将在当月继续进行,直到容器结束。

无论客户的订阅状态如何,AWS Marketplace Metering Control Plane 都会继续向客户收取运行 Amazon ECS 任务和 Amazon EKS 容器组 (pod) 的费用。这样,您的软件就无需在任务或容器组 (pod) 首次成功启动后执行授权检查。

每小时计量先决条件

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

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

    有关更多信息,请参阅创建容器产品

  2. 填写产品加载表单 (PLF) 以及必要的每小时价格信息,并将其返回给我们进行处理。

    有关更多信息,请参阅创建或更新容器产品的定价详细信息(旧版)

  3. 将用于运行应用程序的任务或容器组 (pod) 的 AWS Identity and Access Management IAM 角色与调用 RegisterUsage 所需的 IAM 权限搭配使用。IAM 托管策略 AWSMarketplaceMeteringRegisterUsage 具有这些权限。

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

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

每小时计量的产品加载表单

在填写每小时计量的产品加载表单时,除了定义产品的其他必填字段和可选字段外,还要为您的产品填写以下字段:

  • 每小时价格 - 产品每小时的价格。

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

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

测试 RegisterUsage 的集成和预览模式

在将映像提交到 AWS Marketplace 以进行发布之前,您可以使用 RegisterUsage API 操作测试您的集成。

预览模式的运行方式与生产模式完全相同,但预览模式不验证对您的产品的使用权。要在预览模式下调用 RegisterUsage,请通过在 Amazon ECS 或 Amazon EKS 上运行您的产品,从而从容器映像中调用 RegisterUsage。使用您正在使用的 AWS 账户在 AWS Marketplace 上上架产品 您的计量集成必须动态设置 AWS 区域,而不是对其进行硬编码。但是,在测试时,请至少在美国东部(弗吉尼亚州北部)区域启动一个包含您的付费容器的 Amazon ECS 任务或 Amazon EKS 容器组 (pod)。这样,AWS Marketplace 运营团队可以使用该区域的日志验证您的工作。

注意

如果您的产品同时支持 Amazon ECS 和 Amazon EKS,则您只需在 Amazon EKS 中启动,我们便能验证您的集成。

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

RegisterUsage 中的错误处理

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

仅在初始调用 RegisterUsage API 操作时引发 ThrottlingException 以外的异常。从同一 Amazon ECS 任务或 Amazon EKS 容器组 (pod) 进行的后续调用不会引发 CustomerNotSubscribedException,即使客户在任务或 容器组 (pod) 仍在运行时取消订阅也是如此。这些客户在取消订阅并跟踪其使用情况后仍需支付运行容器的费用。

下表描述了 RegisterUsage API 操作可能会引发的错误。每个 AWS SDK 编程语言都有一组错误处理准则,您可以参阅它们来了解其他信息。

错误 描述
InternalServiceErrorException RegisterUsage 不可用。
CustomerNotEntitiledException 客户没有产品的有效订阅。
InvalidProductCodeException 作为请求的一部分传入的 ProductCode 值不存在。
InvalidPublicKeyException 作为请求的一部分传入的 PublicKeyVersion 值不存在。
PlatformNotSupportedException AWS Marketplace 不支持来自底层平台的计量用量。仅支持 Amazon ECS、Amazon EKS 和 AWS Fargate。
ThrottlingException RegisterUsage 的调用受限。
InvalidRegionException RegisterUsage 必须在与启动 Amazon ECS 任务或 Amazon EKS 容器组 (pod) 相同的 AWS 区域中调用。这可防止容器在调用 RegisterUsage 时选择区域(例如,withRegion(“us-east-1”))。