本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 將授權與 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一節。
如需將 AWS License Manager 與 AMI 型產品與合約定價整合的詳細資訊,請參閱AWS Marketplace 賣方研討會預付付款實驗室定價的列出 AMI 產品
注意
-
客戶無法在合約到期期間之後啟動新的 AMI 執行個體。不過,在合約期間,他們可以啟動任意數量的執行個體。這些授權不會鎖定節點或綁定到特定執行個體。
-
Private Offer Creation – 賣方可以使用 中的 Private Offer 建立工具,為產品產生私有優惠 AWS Marketplace 管理入口網站。
-
報告 – 您可以在 的報告區段中設定 Amazon S3 儲存貯體,以設定資料摘要 AWS Marketplace 管理入口網站。如需詳細資訊,請參閱 中的賣方報告、資料饋送和儀表板 AWS Marketplace。
授權模型
AWS Marketplace 與 整合 AWS License Manager 支援兩種授權模型:
可設定的授權模型
可設定授權模型 (也稱為可量化授權模型) 會在買方取得授權後,授予買方特定數量的資源。
您可以設定定價維度和每個單價。然後,買方可以選擇他們想要購買的資源數量。
範例 定價維度和每個單價的
您可以設定定價維度 (例如資料備份) 和每個單價 (例如 $30/單位)
買方可以選擇購買 5、10 或 20 個單位。
您的產品會追蹤和測量用量,以測量消耗的資源數量。
使用組態模型時,會以下列兩種方式之一計算權限:
下調授權
使用時,授權會從允許數量的集區中提取。該權利會永久簽出,且無法傳回至授權集區。
範例 處理有限數量的資料
使用者有權處理 500 GB 的資料。隨著他們繼續處理資料,數量會從 500 GB 的集區中抽取,直到全部 500 GB 授權都用盡為止。
對於提取授權,您可以使用 CheckoutLicense
API 操作來查看已耗用的授權單位。
範例 備份到 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 個同時使用者是固定的上限。
對於浮動授權,您可以使用 CheckInLicense
API 操作將授權單位傳回至權利集區。
範例 一年的並行使用者數量
您的產品會根據並行使用者數量定價。客戶為 10 個使用者購買授權一年。客戶提供 AWS Identity and Access Management (IAM) 許可來啟動軟體。當使用者登入時,您的應用程式會呼叫 CheckoutLicense
API 操作,將數量減少 1。當使用者登出時,應用程式會呼叫 CheckInLicense
API 操作,將該授權傳回至集區。如果您不呼叫 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、Intermediate 和 Premium。然後,買方會選取其中一個預先定義的層。
應用程式不需要追蹤或計量應用程式的用量。
使用分層授權模型時,不會計算權利,而是表示客戶購買的服務層級。
如果您想要同時提供綁定功能,建議您使用分層授權模型。
範例 基本、中級和高級方案
客戶可以為軟體的三個可能層之一簽署合約:基本、中級或高級。每個方案都有自己的定價。您的軟體可以透過叫用 CheckoutLicense
API 操作並在請求中指定所有可能的層來識別客戶已註冊的層。
請求的回應包含對應於客戶已取得之層的權限。根據此資訊,軟體可以佈建適當的客戶體驗。
請求
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:
-
賣方建立具有 AWS License Manager 整合的產品。
-
賣方會列出 上的產品 AWS Marketplace。
-
買方在 上找到 AWS Marketplace 並購買產品。
-
授權會傳送給其 中的買方 AWS 帳戶。
-
買方透過啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體、Amazon Elastic Container Service (Amazon ECS) 任務或 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 軟體來使用軟體,客戶使用 IAM 角色部署 。
-
軟體會讀取買方 AWS License Manager 帳戶中的授權、探索購買的權限,並相應地佈建功能。
注意
License Manager 不會執行任何追蹤或更新;這由賣方的應用程式完成。
License Manager 整合先決條件
在發佈產品之前,您必須執行下列動作:
-
在 中建立新的 AMI 產品 AWS Marketplace 管理入口網站,並記下其產品代碼。
-
將必要的價格資訊填入產品載入表單 (PLF),並將其傳回給我們進行處理。
-
針對執行應用程式的 任務或 Pod 使用 IAM 角色,並具有呼叫
CheckoutLicense
、ExtendLicenseConsumption
和 所需的 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":"*" } ] }
-
使用您定義的所有定價維度的記錄來測試呼叫
RegisterUsage
API 操作。
將 AMI 型產品與 整合 AWS License Manager
您可以使用 AWS License Manager API 整合 AMI 型產品與 License Manager。使用 AWS Marketplace AMI 型產品啟動 Amazon EC2 執行個體。
注意
在執行下列程序License Manager 整合先決條件之前,請確定您已完成 。
將您的 AMI 型產品與 License Manager 整合
-
完成在 License Manager 中建立測試授權中的程序。您必須在 License Manager 中建立測試授權,以測試整合。
-
使用您在步驟 1 中取得的授權 Amazon Resource Name (ARN) 執行 GetLicense API 操作。請注意
GetLicense
回應KeyFingerprint
的屬性值,以供日後使用。 -
在您的應用程式中下載並包含最新的公有 AWS SDK。
-
若要驗證買方有權為您的應用程式使用授權,請執行 CheckoutLicense API 操作。使用您在步驟 1 中取得之測試授權的權限詳細資訊和金鑰指紋。
如果找不到授權的權限,或超過權限上限計數,
CheckoutLicense
則 API 操作會傳回NoEntitlementsAllowedException
。如果權限有效或可供使用,CheckoutLicense
操作會傳回成功回應,其中包含請求的權限及其值。 -
(僅適用於浮動權限) 使用
CheckoutLicense
回應中LicenseConsumptionToken
收到的 執行 CheckinLicense API 操作。此動作會將先前已簽出的權限傳回至可用權限集區。 -
在您成功驗證 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。不過,只能為產品啟用一種類型。建立授權時,包括測試授權,您必須指定下列其中一種權限類型:
分層權利 – 分層授權模型讓客戶有權使用特定應用程式功能。客戶無法定義想要購買的單位數量。不過,他們可以選取單一預先定義的套件或層。客戶稍後可以修改合約以訂閱另一個方案。
可設定的權限 – 當客戶取得授權時,可設定的授權模型會將權利授予特定數量的資源。客戶會選擇要在訂閱程序期間購買的單位數量,並根據單價計費。客戶也可以訂閱多個維度。
用於 CheckoutLicense
API 操作的必要參數如下:
-
CheckoutType
– 有效值為Perpetual
或Provisional
:-
Perpetual
– 用於從集區中耗盡已簽出的權限數量。範例:買方有權處理 500 GB 的資料。當他們繼續處理資料時,數量會從 500 GB 的集區中消耗。取得已購買授權的狀態,了解授權是否已過期或即將過期,以傳送通知給客戶。 -
Provisional
– 用於浮動授權權利,其中權限會從集區中簽出,並在使用後傳回。範例:使用者有權在應用程式中同時存取 500 個使用者。當使用者登入和登出時,系統會將使用者繪製並傳回至 500 名使用者的集區。如需浮動授權權利的詳細資訊,請參閱 AWS License Manager 中的賣方發行的授權。
-
-
ClientToken
– 唯一且區分大小寫的識別符,以確保發生確切的結果,無論嘗試多少次,都是相同的。我們建議您針對每個請求使用隨機通用唯一識別碼 (UUID)。 -
Entitlements
– 要簽出的權限清單。-
對於分層權限,請提供
Name
和Unit
屬性,如下所示:{
"Name": "<
Entitlement_Name
>","Unit": "
None
"}
-
針對可設定的權限,提供
Name
、Unit
和Value
屬性,如下所示:{
"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。
範例 可設定的權限
以下是使用 CheckoutLicense
API 操作來檢查名為 之可設定權限的請求範例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"
範例 分層權利的
以下是使用 CheckoutLicense
API 操作來查看名為 之功能權利的請求範例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 型產品建立測試授權
-
在已安裝 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)
-
使用 AWS License Manager 主控台授予授權。如需詳細資訊,請參閱《 License Manager 使用者指南》中的分發權利。
-
登入做為買方帳戶的 AWS 帳戶 ,您將在其中部署和測試您的軟體。這必須與建立和授予授權 AWS 帳戶 的 AWS 帳戶 不同。
-
前往 AWS License Manager 主控台以接受並啟用授予的授權。如需詳細資訊,請參閱《 License Manager 使用者指南》中的管理您授予的授權。
-
在您的環境中執行下列命令。
# 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 方面,您不需要採取任何不同的動作來處理續約和升級。
由於授權續約、升級、取消等,建議您的產品在使用產品時定期執行 CheckoutLicense
API 呼叫。透過定期使用 CheckoutLicense
API 操作,產品可以偵測權限的變更,例如升級和過期。
建議您每 15 分鐘執行一次 CheckoutLicense
API 呼叫。