本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Marketplace Metering Service 設定容器產品的自訂計量
AWS Marketplace 容器產品可以針對每個產品最多 24 個不同的定價維度進行自訂計量。每個維度都有與其相關聯的長期合約價格。若要啟用自訂計量,請將您的容器產品與 AWS Marketplace Metering Service 整合。您可以為該用量定義自己的定價單位和自訂計量,以便使用 MeterUsage
API操作 AWS 計費。下列各節說明如何設定容器產品的自訂計量。
價格維度在兩個位置定義,一次在產品載入表單中,一次在MeterUsage
操作中。此雙因素方法可確保後續優惠在公開前如預期般運作。
若要設定自訂計量,您需要選擇用量類別、單位類型和定價維度:
-
用量類別 – 用量類別可協助買家了解您的產品是什麼,以及如何使用產品。
-
單位類型 – 單位類型定義計費的計量單位。例如,在 GBps或 中測量的頻寬MBps、主機數量,或以 MB、GB 或 TB 為單位測量的資料。
-
定價維度 – 定價維度代表您為 (例如使用者、掃描、 vCPUs或部署的代理程式) 設定了每單位價格的特徵或服務。定價維度為公有。不過,您仍然可以為公有產品定義私有和自有授權 (BYOL) 優惠。請勿在計量記錄中傳送定價。您可以測量單位數量,我們會搭配使用該數量,以及您建立產品以計算買方帳單時定義的價格。
如果您的產品定價不符合任何預先定義的類別或單位類型,您可以選擇一般單位類別。然後,使用維度描述來描述裝置是什麼。
或者,您可以依追蹤的屬性,將用量分配至配置。配置會以標籤表示給買方。這些標籤可讓買方依標籤值檢視其依用量分割的成本。例如,如果您由使用者收費,且使用者具有「部門」屬性,則可以使用具有「部門」索引鍵的標籤建立用量配置,每個值一個配置。這不會變更您報告的價格、維度或總用量,但允許客戶依適合您產品的類別檢視其成本。
建議您每小時傳送一次計量記錄。不過,您也可以彙總每日或每月期間的用量。如果您遇到中斷,您可以彙總購買者軟體的使用,並在接下來的小時計量中傳送。您無法每小時傳送超過一筆記錄。
重要
免費試用和預付權利會每小時追蹤一次。因此,在 中分別傳送這些記錄可能會導致購買者過度收費。
主題
自訂計量先決條件
在發佈產品之前,您必須執行下列動作:
-
在 中建立新的容器產品 AWS Marketplace 管理入口網站,並記下其產品代碼。
-
將必要的維度資訊填入產品載入表單,並將其傳回給我們進行處理。
-
針對執行應用程式的任務或 Pod 使用 AWS Identity and Access Management (IAM) 角色,並具有呼叫 所需的IAM許可
MeterUsage
。IAM 受管政策AWSMarketplaceMeteringRegisterUsage
具有這些許可。 -
(選用) 如果您想要查看 AWS CloudTrail 記錄,建議您啟用任務或 Pod 定義的記錄。
-
使用您定義的所有定價維度的記錄對
MeterUsage
API 操作進行測試呼叫。
自訂計量的產品載入表單
填寫自訂計量的產品負載表單時,每個產品最多可以有 24 個維度。維度定義於下列欄位:
-
維度名稱 – 容器應用程式將計量記錄傳送至 時使用的名稱 AWS Marketplace Metering Service。此名稱表示您的買家將使用的維度。此名稱可見於帳單報告中。設定名稱後,您無法變更名稱。
-
維度描述 – 面向買方的維度描述。描述不能超過 70 個字元。產品公開發佈給買方之後,就無法變更此欄位。
-
維度率 – 買家在付款時,此產品的每單位軟體價格。此欄位支援三個小數位。
-
Dimension Long Term Rate – 買方預付時長期合約的總軟體價格。
-
長期持續時間 (天) – 長期合約的持續時間,以天為單位。
測試MeterUsage
整合和預覽模式
使用 MeterUsage
操作來測試整合,然後再將映像提交至 AWS Marketplace 進行發佈。
預覽模式的運作方式與生產模式相同,但預覽模式不會驗證使用您產品的權限。若要MeterUsage
以預覽模式呼叫 ,MeterUsage
請在 Amazon Elastic Container Service (Amazon ECS) 或 Amazon Elastic Kubernetes Service (Amazon EKS) 上執行產品,並使用 AWS 帳戶 來列出 上的產品,從容器映像呼叫 AWS Marketplace。您的計量整合必須動態設定 AWS 區域,而不是進行硬式編碼。不過,在測試時,請啟動至少一項 Amazon ECS任務或包含美國東部 (維吉尼亞北部) 區域中已付費容器的 Amazon EKS Pod,以便 AWS Marketplace 操作團隊可以驗證您與該區域中的日誌搭配使用的工作。
注意
-
如果您的產品同時支援 Amazon ECS和 Amazon EKS,您只需在 Amazon 中啟動EKS,我們才能驗證您的整合。
-
在將產品啟動至公有環境之前,以及新增維度之後,請測試每個維度。如果您未傳送與容器產品相關聯的每個維度的計量記錄,則會導致請求失敗的錯誤。
在產品發佈所有必要的中繼資料和定價資訊之前,您無法完全測試整合。如果請求, AWS Marketplace 目錄操作團隊可以在預覽模式下驗證是否收到計量記錄。
處理 時發生錯誤 MeterUsage
如果您的容器映像與 MeterUsage
操作整合,並收到容器啟動ThrottlingException
時以外的例外狀況,您應該終止容器,以防止未經授權的使用。
只有在對 的初始呼叫中ThrottlingException
擲出 以外的例外狀況MeterUsage
。CustomerNotSubscribedException
即使客戶在ECS任務或 Pod 仍在執行時取消訂閱,來自相同 Amazon 任務或 Amazon EKS Pod 的後續呼叫也不會擲回。這些客戶在取消訂閱並追蹤其用量後,仍需支付執行容器的費用。
如需 常見錯誤的詳細說明,請參閱 MeterUsage 中的 AWS Marketplace Metering Service API參考MeterUsage
。每種 AWS SDK程式設計語言都有一組錯誤處理指南,如需其他資訊,請參閱 。
供應商計量標記 (選用)
供應商計量標記有助於獨立軟體供應商 (ISVs) 更詳細地了解買方的軟體用量,並可協助他們執行成本分配。
標記買方軟體用量的方法有很多種。其中一種方法是先詢問您的買家想要在成本分配中看到什麼。然後,您可以將用量分割至您追蹤購買者帳戶的屬性。屬性的範例包括 AccountId
、Cost Centers
、 Business Unit
和您產品的其他相關中繼資料。這些屬性會以標籤的形式公開給買方。使用標籤時,購買者可以在 AWS 帳單主控台 () 中,依標籤值檢視分割為用量的成本https://console.aws.amazon.com/billing/
在常見的使用案例中,買家使用一個 訂閱您的產品 AWS 帳戶。買方也有許多與相同產品訂閱相關聯的使用者。您可以使用具有 金鑰的標籤建立用量配置AccountId
,然後將用量配置給每個使用者。在這種情況下,買方可以在其 Billing and Cost Management 主控台中啟用AccountId
標籤,並分析個別使用者用量。
賣方體驗
賣方可以使用相同的標籤集彙總資源的計量記錄,而不是彙總所有資源的使用。例如,賣方可以建構包含不同 儲存貯體的計量記錄UsageAllocations
。每個儲存貯體UsageQuantity
代表一組標籤,例如 AccountId
和 BusinessUnit
。
在下圖中,資源 1 具有一組唯一的 AccountId
和 BusinessUnit
標籤,並會以單一項目顯示在計量記錄中。
資源 2 和資源 3 都具有相同的AccountId
標籤 2222
和相同的BusinessUnit
標籤 Operations
。因此,它們會合併為計量記錄 中的單一UsageAllocations
項目。
賣方也可以將沒有標籤的資源UsageAllocation
與配置的使用量結合為單一資源,並將其作為 中的其中一個項目傳送UsageAllocations
。
限制包括:
-
標籤數目 – 5
-
大小
UsageAllocations
(基數) – 2,500
驗證包括:
-
標籤索引鍵和值允許的字元 – a-zA-Z0-9+ -=._:\/@
-
UsageAllocation
清單中的標籤上限 – 5 -
兩個
UsageAllocations
不能具有相同的標籤 (即標籤索引鍵和值的相同組合)。如果是這種情況,他們必須使用相同的UsageAllocation
。 -
AllocatedUsageQuantity
的 總和UsageAllocation
必須等於UsageQuantity
,即彙總用量。
買方體驗
下表顯示買方啟用 AccountId
和BusinessUnit
廠商標籤後的買方體驗範例。
在此範例中,買方可以在成本用量報告中看到配置的用量。供應商計量標籤使用字首 “aws:marketplace:isv”
。買方可以在 Billing and Cost Management 中,在 Cost Allocation 標籤 、 AWS產生的成本分配標籤 下啟用這些標籤。
成本用量報告的第一列和最後一列與賣方傳送至計量服務的資料相關 (如賣方體驗範例所示)。
成本用量報告 (簡化) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ProductCode | 買方 | UsageDimension | UsageQuantity | aws:marketplace:isv:AccountId |
aws:marketplace:isv:BusinessUnit |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | 網路:每個 (GB) 已檢查 | 70 | 2222 | 作業 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | 網路:每個 (GB) 已檢查 | 30 | 3333 | 財務 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | 網路:每個 (GB) 已檢查 | 20 | 4444 | IT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | 網路:每個 (GB) 已檢查 | 20 | 5555 | 行銷部門 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xyz | 111122223333 | 網路:每個 (GB) 已檢查 | 30 | 1111 | 行銷部門 |
如需程式碼範例,請參閱「MeterUsage 使用配置標籤的程式碼範例 (選用)」。
程式碼範例
下列程式碼範例可協助您整合容器產品與 AWS Marketplace APIs發佈和維護產品所需的 。
MeterUsage
使用配置標籤的程式碼範例 (選用)
下列程式碼範例與具有耗用定價模型的容器產品相關。Python 範例會傳送具有適當用量分配標籤的計量記錄給 AWS Marketplace pay-as-you-go,以向客戶收取費用。
# NOTE: Your application will need to aggregate usage for the # customer for the hour and set the quantity as seen below. # AWS Marketplace can only accept records for up to an hour in the past. # # productCode is supplied after the AWS Marketplace Ops team has # published the product to limited # Import AWS Python SDK import boto3 import time usageRecord = [ { "AllocatedUsageQuantity": 2, "Tags": [ { "Key": "BusinessUnit", "Value": "IT" }, { "Key": "AccountId", "Value": "123456789" }, ] }, { "AllocatedUsageQuantity": 1, "Tags": [ { "Key": "BusinessUnit", "Value": "Finance" }, { "Key": "AccountId", "Value": "987654321" }, ] } ] marketplaceClient = boto3.client("meteringmarketplace") response = marketplaceClient.meter_usage( ProductCode="testProduct", Timestamp=int(time.time()), UsageDimension="Dimension1", UsageQuantity=3, DryRun=False, UsageAllocations=usageRecord )
如需 的詳細資訊MeterUsage
,請參閱 參考 MeterUsage中的 。 AWS Marketplace Metering Service API
回應範例
{ "MeteringRecordId": "string" }