使用将许可证与AMI基于产品的相关联 AWS License Manager - AWS Marketplace

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

使用将许可证与AMI基于产品的相关联 AWS License Manager

对于采用合同定价的基于亚马逊机器映像 (AMI) 的产品,您可以使用 AWS License Manager 将许可证与您的产品关联起来。 AWS License Manager 是一种许可证管理工具,可让您的应用程序跟踪和更新客户购买的许可证(也称为授权)。集成完成后,您可以在 AWS Marketplace上发布您的产品清单。以下各节提供了有关使用 AWS License Manager 将许可证与AMI基于您的产品关联的更多信息。

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

注意
  • 在合同到期AMI后,客户无法启动新的实例。但是,在合同有效期内,他们可以启动任意数量的实例。这些许可证没有节点锁定或绑定到特定实例。

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

许可模式

AWS Marketplace 与的集成 AWS License Manager 支持两种许可模式:

可配置许可模式

可配置许可证模型(也称为可量化许可证模型)在买家获得许可证后授权买家获得特定数量的资源。

您可以设置定价维度和每单位价格。然后,买家可以选择他们想要购买的资源数量。

例 定价维度和每单位价格

您可以设置定价维度(例如数据备份)和每单位价格(例如每单位 30 美元)

买家可以选择购买 5、10 或 20 个单位。

您的产品会跟踪和计量使用情况,以衡量消耗的资源数量。

在配置模式下,权利将通过以下两种方式之一进行计数:

消耗许可证

在使用时,许可证是从允许数量的许可证池中消耗。该权利已永久签出,无法返回到许可证池。

例 处理有限数量的数据示例

用户有权处理 500 GB 的数据。当他们继续处理数据时,系统会从 500 GB 的池中消耗数量,直到所有 500 GB 的许可证都用完为止。

对于提款许可证,您可以使用CheckoutLicenseAPI操作来查看已消耗的许可证单位。

例 每年备份到 S3 的多个单位示例

您拥有的存储产品允许将多达 1024 个单位的数据备份到 Amazon Simple Storage Service (Amazon S3) 中以存储一年的数据。您的应用程序可以使用多个 Amazon EC2 实例启动。您的应用程序具有跟踪和聚合数据的机制。每次备份时,您的软件都会使用产品 ID 调用该CheckoutLicenseAPI操作以更新消耗的数量。

在此示例中,您的软件调用 CheckoutLicense 以签出 10 个单位的数据。当总容量达到客户购买的备份限制时,API呼叫就会失败。

请求

linux-machine ~]$ aws license-manager checkout-license\ --product-sku "2205b290-19e6-4c76-9eea-377d6bf7la47" \ --checkout-type "PERPETUAL" \ --key-fingerprint "aws:294406891311:AWS/Marketplace:issuer-fingerprint" \ --entitlements "Name=DataConsumption, Value=l0, Unit=Count" \ --client-token "AKIAIOSFODNN7EXAMPLE"

响应

{ "CheckoutType": "PERPETUAL", "EntitlementsAllowed": [ { "Name": "DataConsumption", "Count": 10, "Units": "Count", "Value": "Enabled" } }, "Expiration": "2021-04-22Tl9:02: 36", "IssuedAt": "2021-04-22Tl8:02:36", "LicenseArn": "arn:aws:license-manager::294406891311:license:l-16bf01b...", "LicenseConsumptionToken": "AKIAIOSFODNN7EXAMPLE" }

浮动许可证

使用后,许可证将返回到允许数量的许可证池中。

例 固定上限的用户数示例

某用户被授予应用程序 500 个并发用户的权利。当用户登录和注销时,用户会被消耗并返回到 500 个用户的池中。但是,应用程序无法从池中消耗超过 500 个用户,因为 500 个并发用户是固定上限。

对于浮动许可证,您可以使用CheckInLicenseAPI操作将许可证单位返回到授权池。

例 一年的并发用户数示例

您的产品根据并发用户数量定价。客户为 10 个用户购买了一份为期一年的许可证。客户通过提供 AWS Identity and Access Management (IAM) 权限来启动软件。当用户登录时,您的应用程序会调用该CheckoutLicenseAPI操作以将数量减少 1。当用户注销时,应用程序会通过调用CheckInLicenseAPI操作将该许可证返回到池中。如果您不调用 CheckInLicense,则许可证单位将在 1 小时后自动签入。

注意

在以下请求中,key-fingerprint 不是占位符值,而是发布所有许可证时使用的指纹的实际值。

请求

linux-machine ~]$ aws license-manager checkout-license\ --product-sku "2205b290-19e6-4c76-9eea-377d6bf7la47" \ --checkout-type "PROVISIONAL" \ --key-fingerprint "aws:294406891311:AWS/Marketplace:issuer-fingerprint" \ --entitlements "Name=ReadOnlyUSers, Value=l0, Unit=Count" \ --client-token "AKIAIOSFODNN7EXAMPLE"

响应

{ "CheckoutType": "PROVISIONAL", "EntitlementsAllowed": [ { "Name": "ReadOnlyUsers", "Count": 10, "Units": "Count", "Value": "Enabled" } }, "Expiration": "2021-04-22Tl9:02: 36", "IssuedAt": "2021-04-22Tl8:02:36", "LicenseArn": "arn:aws:license-manager::294406891311:license:l-16bf01b...", "LicenseConsumptionToken": "AKIAIOSFODNN7EXAMPLE" }

分层许可模式

分层许可模式在买家获得许可后,使买家有权使用特定级别或层的应用程序特征。

您可以为产品创建层,例如基本、中级和高级。然后,买家选择一个预定义的层。

应用程序无需跟踪或计量应用程序的使用情况。

在分层许可模式下,权利不计算在内,而是表示客户购买的服务层。

如果您想同时提供捆绑特征,我们建议您使用分层许可模式。

例 基本、中级和高级层

客户可以签署软件三个可能层之一的合同:基础、中级或高级。每个层都有自己的定价。您的软件可以通过调用CheckoutLicenseAPI操作并在请求中指定所有可能的等级来识别客户已注册的等级。

请求响应包含与客户购买的层相对应的权利。基于这些信息,该软件可以预置适当的客户体验。

请求

linux-machine ~]$ aws license-manager checkout-license\ --product-sku "2205b290-19e6-4c76-9eea-377d6bf7la47" \ --checkout-type "PROVISIONAL" \ --key-fingerprint "aws:294406891311:AWS/Marketplace:issuer-fingerprint" \ --entitlements "Name=BasicTier, Unit=None" "Name=IntermediateTier, Unit=None" \ "Name=PremiumTier, Unit=None"

响应

{ "CheckoutType": "PROVISIONAL", "EntitlementsAllowed": [ { "Name": "IntermediateTier", "Units": "None" } }, "Expiration": "2021-04-22Tl9:02:36", "IssuedAt": "2021-04-22Tl8:02:36", "LicenseArn": "arn:aws:license-manager::294406891311:license:l-16bf01b...", "LicenseConsumptionToken": "AKIAIOSFODNN7EXAMPLE" }

集成工作流

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

  1. 卖家创建具有 AWS License Manager 集成功能的产品。

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

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

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

  5. 买家通过启动亚马逊弹性计算云 (亚马逊EC2) 实例、亚马逊弹性容器服务 (亚马逊ECS) 任务或亚马逊 Elastic Kubernetes Service (Ama EKS zon) pod 软件来使用该软件,客户使用角色进行部署。IAM

  6. 软件读取买方 AWS License Manager 账户中的许可证,发现购买的权利并相应地配置功能。

    注意

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

License Manager 集成先决条件

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

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

  2. 在产品装货表 (PLF) 中填写必要的价格信息,然后将其退还给我们进行处理。

  3. 为运行应用程序的任务或 Pod 使用具有调用CheckoutLicenseExtendLicenseConsumption、和所需IAM权限的IAM角色CheckInLicense

    以下IAM策略详细说明了所需的IAM权限。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"VisualEditorO", "Effect":"Allow", "Action":[ "license-manager:CheckoutLicense", "license-manager:GetLicense", "license-manager:CheckInLicense", "license-manager:ExtendLicenseConsumption", "license-manager:ListReceivedLicenses" ], "Resource":"*" } ] }
  4. 使用您定义的所有定价维度的记录对RegisterUsageAPI操作进行测试调用。

将AMI基于产品的集成 AWS License Manager

您可以使用 License Manager 将AMI基于您的产品与 License Manager 集成AWS License ManagerAPI。使用 AWS Marketplace AMI基于产品的启动Amazon EC2 实例。

注意

在执行以下步骤之前,请确保您已完成 License Manager 集成先决条件

将AMI基于您的产品与 License Manager 集成
  1. 完成在 License Manager 中创建测试许可证中的过程。您必须在 License Manager 中创建测试许可证才能测试您的集成。

  2. 使用您在步骤 1 中获得的许可 Amazon 资源名称 (ARN) 运行GetLicenseAPI操作。记下 GetLicense 响应的 KeyFingerprint 属性的值以备后用。

  3. 下载并在您的应用程序 AWS SDK中包含最新的公开内容。

  4. 要验证买家是否有权为您的应用程序使用许可证,请运行该CheckoutLicenseAPI操作。使用您在步骤 1 中获得的测试许可证的权利详细信息和密钥指纹。

    如果找不到许可证的授权,或者超过了授权上限,则CheckoutLicenseAPI操作将返回NoEntitlementsAllowedException。如果权利有效或可供使用,则 CheckoutLicense 操作将返回包含请求的权利及其值的成功响应。

  5. (仅适用于浮动授权)使用CheckoutLicense响应中收到LicenseConsumptionTokenCheckinLicenseAPI操作运行操作。此操作会将先前已签出的权利释放回可用权利池中。

  6. 成功使用您在步骤 1 中创建的测试许可证验证 License Manager 集成后,将代码中的密钥指纹更新为 aws:294406891311:AWS/Marketplace:issuer-fingerprint。现在,您可以继续使用由 AWS Marketplace颁发的许可证。

遵循为AMI产品构建应用程序的发布流程,然后 AWS Marketplace 按照产品发布流程将产品提交给。

在 License Manager 中创建测试许可证

您可以使用版本 2 的 AWS Command Line Interface (AWS CLI) 在中创建测试许可证 AWS License Manager。此测试许可证仅用于验证和测试集 AWS License Manager 成。测试完成后,您可以删除测试许可证。实际许可证由 AWS Marketplace 使用不同的密钥指纹生成。

AWS Marketplace 中支持两种类型的权利 AWS License Manager。但是,一个产品只能启用一种类型。在创建许可证(包括测试许可证)时,必须指定以下任一权利:

分层权利 – 分层许可模式使客户有权使用某些应用程序特征。买家无法定义他们想要购买的产品数量。但是,他们可以选择一个预定义的套餐或层。客户可以稍后修改合同以订阅其他层。

可配置的权利 – 客户购买许可证后,可配置许可证模型会向其授予一定数量的资源权利。客户在订阅过程中选择他们想要购买的单位数量,并将根据单价进行计费。客户还可以订阅多个维度。

CheckoutLicenseAPI操作中使用的必需参数如下:

  • CheckoutType – 有效值为 PerpetualProvisional

    • Perpetual – 当已签出的权利池中的权利数量将用尽时使用。示例:买家有权处理 500 GB 的数据。当他们继续处理数据时,会消耗 500 GB 池的数量并将其耗尽。获取已购买许可证的状态,了解许可证是已过期还是即将过期,以便向客户发送通知。

    • Provisional – 用于浮动许可证权利,其中权利从池中签出,并在使用后返回。示例:某用户被授予应用程序 500 个并发用户的权利。当用户登录和注销时,用户会被消耗并返回到 500 个用户的池中。有关浮动许可证权利的更多信息,请参阅 License Manager 中卖家颁发的AWS许可证。

  • ClientToken – 区分大小写的唯一标识符,可确保结果准确无误,并且无论尝试多少次都相同。我们建议您为每个请求使用随机的通用唯一标识符 (UUID)。

  • Entitlements – 待签出的权利列表。

    • 对于分层权利,请按以下方式提供 NameUnit 属性:

      {

      "Name": "<Entitlement_Name>",

      "Unit": "None"

      }

    • 对于可配置权利,请按如下方式提供 NameUnitValue 属性:

      {

      "Name": "<Entitlement_Name>",

      "Unit": "<Entitlement_Unit>",

      "Value": <Desired_Count>{

      }

  • KeyFingerprint – 使用此密钥指纹验证许可证是否由 AWS Marketplace颁发。由颁发的许可证的密钥指纹 AWS Marketplace 如下:

    aws:294406891311:AWS/Marketplace:issuer-fingerprint

  • Product SKU— 采用与产品关联的全球唯一标识符 (GUID) 格式 AWS Marketplace 的产品编号。

例 可配置权利示例

以下是使用CheckoutLicenseAPI操作签出名为的可配置授权的请求示例PowerUsers

aws license-manager checkout-license \ product-sku "2205b290-19e6-4c76-9eea-377d6bf71a47" \ checkout-type "PROVISIONAL" \ client-token "79464194dca9429698cc774587a603a1" \"Statement":[ entitlements "Name=PowerUsers,Value=1,Unit=Count" \ key-fingerprint "aws:294406891311:AWS/Marketplace:issuer-fingerprint"
例 分层权利示例

以下是使用CheckoutLicenseAPI操作来检出名为的功能授权的请求示例EnterpriseEdition

aws license-manager checkout-license \ --product-sku "2205b290-19e6-4c76-9eea-377d6bf71a47" \ --checkout-type "PROVISIONAL" \ --client-token "79464194dca9429698cc774587a603a1" \ --entitlements "Name=EnterpriseEdition,Unit=None" \ --key-fingerprint "aws:294406891311:AWS/Marketplace:issuer-fingerprint"
为AMI基于您的产品创建测试许可证
  1. 在安装了 AWS CLI v2 的本地环境中,运行以下脚本。该脚本创建测试许可证并配置相应的产品详细信息。

    注意

    使用与部署和测试 AWS 账户 软件时 AWS 账户 不同的测试。无法在同一 AWS 账户中创建、授予和签出许可证。

    #!/bin/bash # Replace with intended product ID on AWS Marketplace PRODUCT_ID=<REPLACE-WITH-PRODUCT-ID> # Replace with license recipient's AWS Account ID BENEFICIARY_ACCOUNT_ID=<REPLACE-WITH-BENEFICIARY-ACCOUNT-ID> # Replace with your product's name PRODUCT_NAME="Test Product" # Replace with your seller name on AWS Marketplace SELLER_OF_RECORD="Test Seller" # Replace with intended license name LICENSE_NAME="AWSMP Test License" # Replace the following with desired contract dimensions # More info here: https://docs.aws.amazon.com/license-manager/latest/APIReference/API_Entitlement.html # Example "configurable entitlement" ENTITLEMENTS='[ { "Name": "ReadOnly", "MaxCount": 5, "Overage": false, "Unit": "Count", "AllowCheckIn": true } ]' # Example "tiered entitlement" # ENTITLEMENTS='[ # { # "Name": "EnterpriseUsage", # "Value": "Enabled", # "Unit": "None" # } # ]' # Format "yyyy-mm-ddTHH:mm:ss.SSSZ" # This creates a validity period of 10 days starting the current day # Can be updated to desired dates VALIDITY_START=$(date +%Y-%m-%dT%H:%M:%S.%SZ) VALIDITY_END=$(date --date="+10 days" +%Y-%m-%dT%H:%M:%S.%SZ) # Configuration for consumption of the license as set on Marketplace products CONSUMPTION_CONFIG='{ "RenewType": "None", "ProvisionalConfiguration": { "MaxTimeToLiveInMinutes": 60 } }' # License's home Region HOME_REGION=us-east-1 # License issuer's name ISSUER=Self # Run AWS CLI command to create a license aws license-manager create-license \ --license-name "${LICENSE_NAME}" \ --product-name "${PRODUCT_NAME}" \ --product-sku "${PRODUCT_ID}" \ --issuer Name="${ISSUER}" \ --beneficiary "${BENEFICIARY_ACCOUNT_ID}" \ --validity 'Begin="'"${VALIDITY_START}"'",End="'"${VALIDITY_END}"'"' \ --entitlements "${ENTITLEMENTS}" \ --home-region "${HOME_REGION}" \ --region "${HOME_REGION}" \ --consumption-configuration "${CONSUMPTION_CONFIG}" \ --client-token $(uuidgen)
  2. 使用 AWS License Manager 控制台授予许可证。有关更多信息,请参阅《License Manager 用户指南》中的分发权利

  3. 登录充当买家账户 AWS 账户 的,您将在其中部署和测试您的软件。这必须与创建和授予许可证的 AWS 账户 不同。 AWS 账户

  4. 前往 AWS License Manager 控制台接受并激活授予的许可证。有关更多信息,请参阅《License Manager 用户指南》中的 管理授予的许可证

  5. 在您的环境中运行以下命令。

    # The following example uses a key fingerprint that should match the test license you created. # When checking out an actual AWS Marketplace created license, use the following fingerprint: # aws:294406891311:AWS/Marketplace:issuer-fingerprint aws license-manager checkout-license \ --product-sku <REPLACE-WITH-PRODUCT-ID> \ --checkout-type PROVISIONAL \ --key-fingerprint "aws:<ACCOUNT-ID-WHERE-YOU-CREATED-TEST-LICENSE>:Self:issuer-fingerprint" \ --entitlements "Name=ReadOnly,Value=1,Unit=Count" \ --client-token $(uuidgen)

    前面的命令使用 PROVISIONAL 作为 CheckoutType 参数的值。如果权利使用消耗许可证,则该值使用 PERPETUAL

License Manager API 呼叫

要管理存储在客户的 License Manager 帐户中的许可证,您的软件可以使用以下API调用:

  • GetLicense – 获取已购买许可证的状态,了解许可证是已过期还是即将过期,以便向客户发送通知。

  • CheckoutLicense – 发现用户已购买的许可证。当用户使用了一定数量的许可证时,您还可以使用它来更新许可证数量。使用 CheckoutLicense,您可以继续签出客户使用的许可证数量。当客户耗尽所有许可证时,此调用将返回错误。有关建议运行 CheckoutLicense 的节奏的信息,请参阅许可证续订和升级

  • ExtendLicenseConsumption – 如果是浮动维度,当软件签出许可证时,它会在 60 分钟后自动将许可证返回到池中。如果您想延长许可证的签出时间,您的软件可以调用 ExtendLicenseConsumption 将许可证再延长 60 分钟。

  • CheckInLicense – 如果是浮动维度,则要将许可证返回到权利池时,请使用 CheckInLicense

  • ListReceivedLicenses – 列出买家购买的许可证。

许可证续订和升级

客户可以在 AWS Marketplace 管理门户上续订或升级许可证。在他们进行额外购买后, AWS Marketplace 会生成反映新权利的新版本的许可证。您的软件使用相同的API调用读取新的授权。您不必在 License Manager 集成方面执行任何不同的操作即可处理续订和升级。

由于许可证续订、升级、取消等,我们建议您的产品在使用产品时按固定节奏进行CheckoutLicenseAPI通话。通过定期使用该CheckoutLicenseAPI操作,产品可以检测权利的变化,例如升级和到期。

我们建议您每 15 分钟进行一次CheckoutLicenseAPI呼叫。