容器产品计费、计量和许可集成 - AWS Marketplace

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

容器产品计费、计量和许可集成

AWS Marketplace 与其他 AWS 服务集成,为您的容器产品提供计量和基于合同的定价。对于按用量定价的基于容器的产品,您可以使用 AWS Marketplace Metering Service 来检查使用产品的权利以及对用量进行计量以进行计费。对于采用合同定价的基于容器的产品,您可以使用 AWS License Manager 将许可证与您的产品相关联。以下部分提供有关 AWS Marketplace Metering Service 的按小时计量和自定义计量以及 AWS License Manager 的合同定价的更多信息。

采用 AWS Marketplace Metering Service 按小时计量和自定义计量

要检查使用产品的权利以及对用量进行计量以进行计费,您可以使用 AWS Marketplace Metering Service。如果您想定义自己的定价单位,并对我们的用量进行计量以进行计费,请使用 MeterUsage API 操作集成。如果您想根据使用的任务或容器组 (pod) 数量为您的产品定价,并让 AWS 自动计量该用量,请使用 RegisterUsage API 操作集成。对于这两种类型的定价,您可以添加长期合同价格,而无需更改与 AWS Marketplace Metering Service 集成的方式。

当您在 AWS Marketplace 管理门户 中创建新的容器产品时,我们会提供一组产品标识符(产品代码和公共密钥),这些标识符用于将您的产品与 AWS Marketplace Metering Service 集成在一起。

权利

与 AWS Marketplace Metering Service 集成后,您可以验证运行付费软件的客户是否已在 AWS Marketplace 上订阅了产品,从而防止在容器启动时未经授权使用。要验证权利,您可以根据定价模式调用 MeterUsageRegisterUsage API 操作。对于每小时和固定每月定价模式,请使用 RegisterUsage API 操作。对于自定义计量定价模式,请使用 MeterUsage API 操作。

如果买家无权使用您的产品,则这些 API 操作会返回 CustomerNotEntitledException 异常。

注意

如果买家在运行您的产品时取消订阅了产品,他们有权继续运行产品。但是,他们无法为您的产品启动其他容器。

集成指南

在创建和发布容器产品以及使用 MeterUsageRegisterUsage API 操作验证权利和计量时,请记住以下准则:

  • 请勿在软件中配置 AWS 凭证或 Docker 容器映像。当您的容器映像在 Amazon ECS 任务或 Amazon EKS 容器组 (pod) 中运行时,会在运行时自动为买家获取 AWS 凭证。

  • 要从 Amazon EKS 调用 MeterUsageRegisterUsage API 操作,您必须使用支持的 AWS SDK。要测试 Amazon EKS 的 MeterUsageRegisterUsage 集成,您运行的 Amazon EKS 集群必须运行 Kubernetes 1.13.x 或更高版本。AWS Identity and Access Management (IAM) 角色需要 Kubernetes 1.13 才能支持容器组 (pod)。正在运行的容器组 (pod) 需要 IAM 角色才能获得在 Amazon EKS 上调用这些操作所需的 AWS 凭证。

  • 您可以进行本地开发,但您将获得 PlatformNotSupportedException 异常。当您在 AWS 容器服务(Amazon ECS、Amazon EKS 和 Fargate)上启动容器时,不会发生此异常。

支持的 AWS 区域

有关所有 AWS Marketplace 支持的 AWS 区域列表,请参阅全球基础设施网站上的区域表

获取 AWS 区域以进行计量

将计量容器与 MeterUsageRegisterUsage API 操作集成时,请勿将 AWS SDK 配置为使用特定 AWS 区域。必须在运行时动态获取区域。

例如,客户启动 Amazon ECS 任务或 Amazon EKS 容器组 (pod)。RegisterUsage API 操作在与启动 Amazon ECS 任务或 Amazon EKS 容器组 (pod) 的区域不同的区域中调用。因此,RegisterUsage API 操作会抛出 InvalidRegionException 错误。

AWS SDK 语言不以一致的方式确定 AWS_REGION。如果您的 SDK 没有自动获取 AWS_REGION,则需要手动编写软件来确定 AWS_Region。例如,在环境变量或其他配置不存在时,适用于 Java 的 AWS SDK 会自动使用 Amazon EC2 实例元数据(具体为 ec2InstanceMetadata)获取区域。在这种情况下,只有在 ec2InstanceMetadata 环境变量不存在时才调用 AWS_REGION

有关如何在运行时动态获取 AWS 区域的信息,请参阅适用于您的编程语言的 AWS SDK 开发人员指南

防止计量修改

为买家引入修改或覆盖对 RegisterUsageMeterUsage 的调用的方法可能导致不受欢迎的账单和付款问题。我们强烈建议您集成计量和授权逻辑。

在设计您的产品以防止计量修改时,请注意以下事项:

  • 如果买家可以插入包含 CMDENTRYPOINT 指令的新映像层,请直接将 RegisterUsageMeterUsage 集成到买家正在通过容器映像运行的软件中。否则,从基本映像中通过 CMDENTRYPOINT 执行的对 RegisterUsageMeterUsage 的调用可能会被买家覆盖。

  • 我们建议您以买家无法修改的方式,管理您的软件用作对 RegisterUsageMeterUsage 的输入的 AWS Marketplace 产品代码。但是,如果您的产品以客户可以覆盖的方式管理产品代码,例如 AWS CloudFormation、Helm 图表或 Kubernetes 清单,则您必须保留受信任的 AWS Marketplace 产品代码列表。这样可确保您的软件作为 RegisterUsageMeterUsage 的输入传递的产品代码有效。

  • 如果任何受信任的产品代码适用于免费产品,请确保它们无法用于替代付费产品代码。

使用 AWS License Manager 进行合同定价管理

对于采用合同定价的基于容器的产品,您可以使用 AWS License Manager 将许可证与您的产品相关联。

AWS License Manager 是一种许可证管理工具,可让您的应用程序跟踪和更新客户购买的许可证(也称为权利)。本部分提供有关如何将您的产品与 AWS License Manager 集成的信息。集成完成后,您可以在 AWS Marketplace 上发布您的产品清单。

有关 AWS License Manager 的更多信息,请参阅《AWS License Manager 用户指南》和《AWS CLI 命令参考》中的 AWS License Manager 部分。

注意
  • 合同到期后,客户无法启动新的容器实例。但是,在合同有效期内,他们可以启动任意数量的实例。这些许可证不绑定到特定的节点或实例。在任何节点上的任何容器上运行的任何软件都可以签出许可证,只要它具有分配的 AWS 凭证。

  • 专属优惠创建 – 卖家可以使用 AWS Marketplace 管理门户 中的专属优惠创建工具为产品生成专属优惠。

集成工作流

以下步骤显示了将容器产品与 AWS License Manager 集成的工作流:

  1. 卖家通过与 AWS License Manager 集成创建产品。

  2. 卖家在 AWS Marketplace 上架产品。

  3. 买家在 AWS Marketplace 中找到产品并购买。

  4. 许可证通过买家的 AWS 账户发送给他们。

  5. 买家通过启动 Amazon EC2 实例、 Amazon EC2 任务或 Amazon EKS 容器组 (pod) 软件来使用该软件。客户使用 IAM 角色进行部署。

  6. 软件读取买家 AWS License Manager 账户中的许可证,发现购买的权利并相应地预置特征。

    注意

    License Manager 不进行任何跟踪或更新;这些是通过卖家的应用程序完成的。