

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

# 使用 AWS Marketplace Metering Service 設定每小時計量
<a name="container-metering-registerusage"></a>

**注意**  
 對於 Amazon EKS 部署，您的軟體必須使用[服務帳戶 (IRSA) 的 IAM 角色](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)來簽署 API 操作的 [https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_RegisterUsage.html](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_RegisterUsage.html) API 呼叫。不支援使用 [EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)、節點角色或長期存取金鑰。  
對於 Amazon ECS 部署，您的軟體必須使用 [Amazon ECS 任務 IAM](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) 角色來簽署 API 操作的 [https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_RegisterUsage.html](https://docs.aws.amazon.com/marketplace/latest/APIReference/API_marketplace-metering_RegisterUsage.html) API 呼叫。不支援使用節點角色或長期存取金鑰。

如果您的容器產品使用每小時每個任務或每個 Pod 定價，而不是自訂計量定價維度，則不需要定義自訂計量維度。您可以使用 AWS Marketplace Metering Service 搭配 中的容器產品進行每小時計量 AWS Marketplace。下列各節說明如何使用 AWS Marketplace Metering Service 設定每小時計量。

`RegisterUsage` API 操作會測量每個 Amazon Elastic Container Service (Amazon ECS) 任務或每個 Amazon Elastic Kubernetes Service (Amazon EKS) Pod 每小時使用的軟體，並將用量按比例分配到第二個。最少 1 分鐘的用量適用於短期使用的任務或 Pod。軟體使用的持續計量由 自動處理 AWS Marketplace Metering Control Plane。除了呼叫`RegisterUsage`一次 開始計量軟體使用之外，您的軟體不需要執行任何計量特定動作。

`RegisterUsage` 必須在啟動容器時立即呼叫 。如果您在容器啟動的前 6 小時內未註冊容器，AWS Marketplace Metering Service 不會提供前幾個月的任何計量保證。不過，計量會在當月繼續，直到容器結束為止。

無論客戶的訂閱狀態為何， AWS Marketplace Metering Control Plane都會繼續向客戶收取執行 Amazon ECS 任務和 Amazon EKS Pod 的費用。這消除了軟體在任務或 Pod 初次成功啟動後執行權利檢查的需求。

如需以每小時定價整合 AWS Marketplace Metering Service API 與容器產品的詳細資訊，請參閱 [與賣方研討會的每小時計量實驗室整合](https://catalog.workshops.aws/mpseller/en-US/container/integrate-hourly)。 *AWS Marketplace *

**Topics**
+ [每小時計量先決條件](#hourly-metering-prereqs)
+ [測試 的整合 `RegisterUsage`](#testing-integration-for-registerusage)
+ [的錯誤處理 `RegisterUsage`](#hourly-metering-entitlement-error-handling)
+ [使用 整合您的容器產品與 AWS Marketplace Metering Service 適用於 Java 的 AWS SDK](java-integration-example-registerusage.md)

## 每小時計量先決條件
<a name="hourly-metering-prereqs"></a>

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

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

   如需詳細資訊，請參閱[概觀：建立容器產品](container-product-getting-started.md#create-container-product)。

1. 針對具有呼叫 所需 IAM 許可的任務或執行應用程式的 Pod，使用 AWS Identity and Access Management (IAM) 角色`RegisterUsage`。IAM 受管政策`AWSMarketplaceMeteringRegisterUsage`具有這些許可。如需政策的詳細資訊，請參閱《 *AWS 受管政策參考*》中的 [ AWSMarketplaceMeteringFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceMeteringFullAccess.html)。

1. （選用） 如果您想要查看記錄，建議您在任務或 Pod 定義中啟用 AWS CloudTrail 記錄。

1. 使用您定義的所有定價維度的記錄測試呼叫 `RegisterUsage` API 操作。

## 測試 的整合 `RegisterUsage`
<a name="testing-integration-for-registerusage"></a>

使用 `RegisterUsage` API 操作來測試整合，然後再將映像提交至 AWS Marketplace 進行發佈。

在 Amazon ECS 或 Amazon EKS 上執行您的產品，`RegisterUsage`從容器映像呼叫 。使用您用來列出產品的 AWS 帳戶 AWS Marketplace。您的計量整合必須動態設定 AWS 區域，而不是硬式編碼。不過，在測試時，請在美國東部 （維吉尼亞北部） 區域啟動至少一個 Amazon ECS 任務或包含已付費容器的 Amazon EKS Pod。透過這樣做， AWS Marketplace 操作團隊可以驗證您在該區域中使用日誌的工作。

**注意**  
如果您的產品同時支援 Amazon ECS 和 Amazon EKS，您只需要在 Amazon EKS 中啟動，我們就能驗證您的整合。

在使用所有必要中繼資料和定價資訊發佈產品之前，您無法完整測試整合。如果請求， AWS Marketplace 目錄操作團隊可以驗證是否收到您的計量記錄。

## 的錯誤處理 `RegisterUsage`
<a name="hourly-metering-entitlement-error-handling"></a>

如果您的容器映像與 整合， AWS Marketplace Metering Service 並收到容器啟動`ThrottlingException`時 以外的例外狀況，您應該終止容器，以防止未經授權的使用。

以外的例外`ThrottlingException`狀況只會在初始呼叫 `RegisterUsage` API 操作時擲回。`CustomerNotSubscribedException` 即使客戶在任務或 Pod 仍在執行時取消訂閱，來自相同 Amazon ECS 任務或 Amazon EKS Pod 的後續呼叫也不會擲回。這些客戶在取消訂閱並追蹤其用量後，仍需支付執行中容器的費用。

下表說明 `RegisterUsage` API 操作可能擲回的錯誤。每個 AWS SDK 程式設計語言都有一組錯誤處理準則，如需其他資訊，請參閱這些準則。


|  **錯誤**  |  **Description**  | 
| --- | --- | 
|  InternalServiceErrorException  |  RegisterUsage 無法使用。 | 
|  CustomerNotEntitledException  |  客戶沒有產品的有效訂閱。 | 
|  InvalidProductCodeException  |  在請求中傳入ProductCode的值不存在。 | 
|  InvalidPublicKeyException  |  在請求中傳入PublicKeyVersion的值不存在。 | 
|  PlatformNotSupportedException  |  AWS Marketplace 不支援從基礎平台計量用量。僅 AWS Fargate 支援 Amazon ECS、Amazon EKS 和 。 | 
|  ThrottlingException  |  對 的呼叫RegisterUsage會受到調節。 | 
|  InvalidRegionException  |  RegisterUsage 必須在與啟動 Amazon ECS 任務或 Amazon EKS Pod AWS 區域 相同的 中呼叫 。這可防止容器在呼叫 時選擇區域 （例如 withRegion(“us-east-1”))RegisterUsage。 | 