本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
容器产品计费、计量和许可集成
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。如果您想定义自己的定价单位并将使用量计给我们进行计费,请使用该MeterUsageAPI操作进行集成。如果您想根据使用的任务或容器数量对产品进行定价,并自动 AWS 计量该使用情况,请使用该RegisterUsageAPI操作进行集成。对于这两种类型的定价,您可以添加长期合同价格,而无需更改与 AWS Marketplace Metering Service集成的方式。
当您在中创建新的容器产品时 AWS Marketplace 管理门户,我们会提供一组产品标识符(产品代码和公钥),用于将您的产品与集成 AWS Marketplace Metering Service。
权利
通过与集成, AWS Marketplace Metering Service 您可以验证运行付费软件的客户是否订阅了您的产品 AWS Marketplace,从而保护您在容器启动时免受未经授权的使用。要验证权利,请使用MeterUsage或RegisterUsageAPI操作,具体取决于您的定价模式。对于每小时和每月固定定价模式,请使用RegisterUsage
API操作。对于自定义计量定价模型,请使用MeterUsage
API操作。
如果买家无权购买您的商品,则这些API操作会返回CustomerNotEntitledException
异常。
注意
如果买家在运行您的产品时取消订阅了产品,他们有权继续运行产品。但是,他们无法为您的产品启动其他容器。
集成指南
在创建和发布容器产品以及使用MeterUsage
或RegisterUsage
API操作进行授权和计量时,请记住以下准则:
-
请勿在软件或 Docker 容器镜像中配置 AWS 凭据。 AWS 当您的容器镜像在亚马逊ECS任务或亚马逊EKS容器中运行时,买家凭证将在运行时自动获取。
-
要从 Amazon 调用
MeterUsage
或RegisterUsage
API操作EKS,必须使用支持的 AWS SDK。要测试MeterUsage
或RegisterUsage
集成亚马逊EKS,您必须运行运行 Kubernetes 1.13.x 或更高版本的亚马逊EKS集群。 AWS Identity and Access Management (IAM) 角色需要 Kubernetes 1.13 才能支持 Pod。IAM正在运行的 pod 需要角色才能获得在 Amazon 上调用这些操作所需的 AWS 证书EKS。 -
您可以进行本地开发,但您将获得
PlatformNotSupportedException
异常。当您在容器服务(亚马逊ECS、亚马逊和 Fargate)上启动 AWS 容器时EKS,不会发生此异常。
支持的 AWS 区域
有关所有 AWS Marketplace 支持的列表 AWS 区域,请参阅全球基础设施网站上的区域表
获取 AWS 区域 用于计量的
将用于计量的容器与MeterUsage
或RegisterUsage
API操作集成时,请不要将配置 AWS SDK为使用特定的 AWS 区域。必须在运行时动态获取区域。
例如,客户启动亚马逊ECS任务或 Amazon EKS Pod。在与启动 Amazon ECS 任务或 Amazon EKS Pod 的区域不同的区域中调用该RegisterUsage
API操作。因此,该RegisterUsage
API操作会引发InvalidRegionException
错误。
AWS SDK语言无法以一致AWS_REGION
的方式确定。如果您SDK没有自动获取AWS_REGION
,则需要手动编写软件才能确定AWS_Region
。例如,当环境变量或其他配置不存在时, AWS SDK for Java 会自动使用 Amazon EC2 实例元数据(具体而言ec2InstanceMetadata
)来获取区域。在这种情况下,只有在 AWS_REGION
环境变量不存在时才调用 ec2InstanceMetadata
。
有关如何在运行 AWS 区域 时动态获取的信息,请参阅适用于您的编程语言的《AWSSDK开发人员指南》
防止计量修改
为买家引入修改或覆盖对 RegisterUsage
或 MeterUsage
的调用的方法可能导致不受欢迎的账单和付款问题。我们强烈建议您集成计量和授权逻辑。
在设计您的产品以防止计量修改时,请注意以下事项:
-
如果买家可以插入包含
CMD
或ENTRYPOINT
指令的新映像层,请直接将RegisterUsage
或MeterUsage
集成到买家正在通过容器映像运行的软件中。否则,从基本映像中通过CMD
或ENTRYPOINT
执行的对RegisterUsage
或MeterUsage
的调用可能会被买家覆盖。 -
我们建议您管理您的软件用作输入 AWS Marketplace 的产品代码,
RegisterUsage
或者以买家无法修改MeterUsage
的方式进行管理。但是,如果您的产品以客户可以覆盖的方式管理产品代码 AWS CloudFormation,例如 Helm chart 或 Kubernetes 清单,则必须维护可信 AWS Marketplace 产品代码列表。这样可确保您的软件作为RegisterUsage
或MeterUsage
的输入传递的产品代码有效。 -
如果任何受信任的产品代码适用于免费产品,请确保它们无法用于替代付费产品代码。
与的合同定价 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 Marketplace 管理门户中的报告部分设置 Amazon S3 存储桶来设置数据源。有关更多信息,请参阅 中的卖家报告、数据源和控制面板 AWS Marketplace。
集成工作流
以下步骤显示了将容器产品与 AWS License Manager集成的工作流:
-
卖家创建具有 AWS License Manager 集成功能的产品。
-
卖家在上架商品 AWS Marketplace。
-
买家在上面找到产品 AWS Marketplace 并购买。
-
许可证通过买家的 AWS 账户发送给他们。
-
买家通过启动亚马逊EC2实例、亚马逊ECS任务或亚马逊 EKS pod 软件来使用该软件。客户使用IAM角色进行部署。
-
软件读取买方 AWS License Manager 账户中的许可证,发现购买的权利并相应地配置功能。
注意
License Manager 不进行任何跟踪或更新;这些是通过卖家的应用程序完成的。