使用 將授權與 AMI型產品建立關聯 AWS License Manager - AWS Marketplace

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 將授權與 AMI型產品建立關聯 AWS License Manager

對於具有合約定價的 Amazon Machine Image (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 的單位/年

您有儲存產品,允許備份至 Amazon Simple Storage Service (Amazon S3),最多 1024 個單位的資料,為期一年。您可以使用多個 Amazon EC2執行個體啟動您的應用程式。您的應用程式具有追蹤和彙總資料的機制。您的軟體會在每次備份時以產品 ID 呼叫 CheckoutLicense API 操作,或以固定間隔來更新耗用的數量。

在此範例中,您的軟體會呼叫 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" }

分層授權模型

分層授權模型可讓購買者在購買授權之後,享有特定層級或層級的應用程式功能。

您可以為產品建立 層,例如 Basic、中級和 Premium。然後,買方會選取其中一個預先定義的層。

應用程式不需要追蹤或測量應用程式的用量。

使用分層授權模型時,不會計算權限,而是表示客戶購買的服務層級。

如果您想要同時提供套件功能,建議您使用分層授權模型。

範例 Basic、中繼和 Premium 層的

客戶可以為軟體的三個可能層之一簽署合約:基本、中級或進階。每個層級都有自己的定價。您的軟體可以透過叫用 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. 買方透過啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體、Amazon Elastic Container Service (Amazon ECS) 任務或 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 軟體來使用軟體,客戶會使用 IAM角色部署 。

  6. 軟體會讀取買方 AWS License Manager 帳戶中的授權、探索購買的權限,並相應地佈建功能。

    注意

    License Manager 不會執行任何追蹤或更新;這由賣方的應用程式完成。

License Manager 整合先決條件

在發佈產品之前,您必須執行下列動作:

  1. 在 中建立新的AMI產品 AWS Marketplace 管理入口網站,並記下其產品代碼。

  2. 將必要的價格資訊填入產品載入表單 (PLF),並將其傳回給我們進行處理。

  3. 針對執行應用程式的 任務或 Pod 使用 IAM角色,具有呼叫 CheckoutLicenseExtendLicenseConsumption和 所需的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

您可以使用 將 AMI型產品與 License Manager AWS License Manager 整合API。使用 AWS Marketplace AMI型產品啟動 Amazon EC2執行個體。

注意

在執行下列程序License Manager 整合先決條件之前,請確定您已完成 。

將 AMI型產品與 License Manager 整合
  1. 完成在 License Manager 中建立測試授權中的程序。您必須在 License Manager 中建立測試授權,以測試整合。

  2. 使用您在步驟 1 中取得的授權 Amazon Resource Name (ARN) 執行GetLicenseAPI操作。請注意GetLicense回應的KeyFingerprint屬性值,以供日後使用。

  3. 下載並在應用程式中包含最新的公有 AWS SDK版本。

  4. 若要驗證買方是否有權為您的應用程式使用授權,請執行 CheckoutLicenseAPI操作。使用您在步驟 1 中取得之測試授權的權限詳細資訊和金鑰指紋。

    如果找不到授權的權限,或超過權限上限計數,CheckoutLicenseAPI操作會傳回 NoEntitlementsAllowedException。如果權限有效或可供使用,CheckoutLicense操作會傳回成功回應,其中包含請求的權限及其值。

  5. (僅適用於浮動權限) 使用CheckoutLicense回應中LicenseConsumptionToken收到的 執行CheckinLicenseAPI操作。此動作會將先前已簽退的權限傳回至可用權限集區。

  6. 成功驗證 License Manager 與您在步驟 1 中建立的測試授權整合後,請將程式碼中的金鑰指紋更新為 aws:294406891311:AWS/Marketplace:issuer-fingerprint。現在,您已準備好使用 核發的 授權 AWS Marketplace。

遵循將應用程式建置至AMI產品的發行程序,然後將產品提交至 AWS Marketplace 遵循產品發佈程序。

在 License Manager 中建立測試授權

您可以使用 AWS Command Line Interface (AWS CLI) 第 2 版在 中建立測試授權 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 的產品 ID。

範例 可設定的權限

以下是使用 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 Integration 方面,您不需要採取任何不同的動作來處理續約和升級。

由於授權續約、升級、取消等,建議您的產品在使用產品時定期執行CheckoutLicenseAPI呼叫。透過定期使用 CheckoutLicenseAPI操作,產品可以偵測權限的變更,例如升級和到期。

建議您每 15 分鐘執行一次CheckoutLicenseAPI通話。