使用 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. 为运行应用程序的任务或容器使用 AWS Identity and Access Management (IAM) 角色,并获得调用所需的 IAM 权限RegisterUsage。IAM 托管策略 AWSMarketplaceMeteringRegisterUsage 具有这些权限。

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

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

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

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

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

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

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

测试 RegisterUsage 的集成和预览模式

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

预览模式的运行方式与生产模式完全相同,但预览模式不验证对您的产品的使用权。要在预览模式下调用 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 容器相同的 AWS 区域 方法进行调用。这可防止容器在调用 RegisterUsage 时选择区域(例如,withRegion(“us-east-1”))。