本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在您建置、測試和部署 APIs之後,您可以將它們封裝在 API Gateway 用量計劃中,並透過 軟體即服務 (SaaS) 產品銷售計劃 AWS Marketplace。訂閱您產品方案的 API 買方,會根據對用量計劃提出的請求數量 AWS Marketplace 計費。
若要在 上銷售 APIs AWS Marketplace,您必須設定要 AWS Marketplace 與 API Gateway 整合的銷售管道。一般而言,這涉及列出您的產品 AWS Marketplace、設定具有適當政策的 IAM 角色,以允許 API Gateway 傳送用量指標給 AWS Marketplace、將 AWS Marketplace 產品與 API Gateway 用量計劃建立關聯,以及將 AWS Marketplace 買方與 API Gateway API 金鑰建立關聯。下列各節將會詳細討論。
如需將 API 做為 SaaS 產品銷售的詳細資訊 AWS Marketplace,請參閱AWS Marketplace 《 使用者指南》。
初始化 AWS Marketplace
與 API Gateway 的整合
下列任務用於一次性初始化與 API Gateway 的 AWS Marketplace 整合,這可讓您將 APIs銷售為 SaaS 產品。
在 上列出產品 AWS Marketplace
若要將您的用量計劃列為 SaaS 產品,請透過 AWS Marketplacerequests
類型的維度 apigateway
。此維度會定義每個請求的價格,且 API Gateway 會使用它來測量傳送至您 API 的請求。
建立計量角色
您可以使用下列執行政策與信任政策來建立名為 ApiGatewayMarketplaceMeteringRole
的 IAM 角色。此角色允許 API Gateway AWS Marketplace 代表您將用量指標傳送至 。
計量角色的執行政策
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:BatchMeterUsage", "aws-marketplace:ResolveCustomer" ], "Resource": "*", "Effect": "Allow" } ] }
計量角色的信任關係政策
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
將用量計劃與 AWS Marketplace 產品建立關聯
當您列出產品時 AWS Marketplace,會收到 AWS Marketplace 產品代碼。若要整合 API Gateway 與 AWS Marketplace,請將您的用量計劃與 AWS Marketplace 產品代碼建立關聯。您可以使用 API Gateway 主控台、API Gateway REST API、 AWS CLI 適用於 API Gateway UsagePlan
的 或適用於 API Gateway 的 AWS SDK,將 API Gateway productCode
的 欄位設定為您的 AWS Marketplace 產品代碼,以啟用關聯。下列程式碼範例會使用 API Gateway REST API:
PATCH /usageplans/
USAGE_PLAN_ID
Host: apigateway.region
.amazonaws.com Authorization: ... { "patchOperations" : [{ "path" : "/productCode", "value" : "MARKETPLACE_PRODUCT_CODE
", "op" : "replace" }] }
處理客戶的用量計劃訂閱
下列作業是由開發人員入口網站應用程式所處理。
當客戶透過 訂閱您的產品時 AWS Marketplace, AWS Marketplace 接著請求您在列出產品時所註冊的 POST
SaaS 訂閱 URL AWS Marketplace。POST
請求會隨附於 x-amzn-marketplace-token
參數,其中包含買方資訊。請遵循 SaaS 客戶上線中的指示,在開發人員入口網站應用程式中處理此重新導向。
回應客戶的訂閱請求, AWS Marketplace 傳送subscribe-success
通知到您可以訂閱的 Amazon SNS 主題。(請參閱 SaaS 客戶上線)。若要接受客戶訂閱請求,您可以為客戶建立或擷取 API Gateway API 金鑰、將客戶 AWS Marketplace佈建的 customerId
與 API 金鑰建立關聯,然後將 API 金鑰新增至您的用量計劃,以處理subscribe-success
通知。
當客戶的訂閱請求完成時,開發人員入口網站應用程式應該將相關聯的 API 金鑰提供給客戶,並通知客戶必須在 API 請求的 x-api-key
標頭中包含此 API 金鑰。
當客戶取消訂閱用量計劃時, AWS Marketplace 會傳送unsubscribe-success
通知至 SNS 主題。若要完成將客戶取消訂閱的程序,您可以從用量計劃中移除客戶的 API 金鑰,來處理 unsubscribe-success
通知。
授權客戶存取用量計劃
若要授權指定客戶存取您的用量計劃,請使用 API Gateway API 為客戶擷取或建立 API 金鑰,然後將 API 金鑰新增至用量計劃。
下列範例顯示如何呼叫 API Gateway REST API,以建立具有特定 AWS Marketplace customerId
值 (MARKETPLACE_CUSTOMER_ID
) 的新 API 金鑰。
POST apikeys HTTP/1.1 Host: apigateway.
region
.amazonaws.com Authorization: ... { "name" : "my_api_key", "description" : "My API key", "enabled" : "false", "stageKeys" : [ { "restApiId" : "uycll6xg9a", "stageName" : "prod" } ], "customerId" : "MARKETPLACE_CUSTOMER_ID
" }
下列範例顯示如何取得具有特定 AWS Marketplace customerId
值 (MARKETPLACE_CUSTOMER_ID
) 的 API 金鑰。
GET apikeys?customerId=
MARKETPLACE_CUSTOMER_ID
HTTP/1.1 Host: apigateway.region
.amazonaws.com Authorization: ...
若要將 API 金鑰新增至用量計劃,請使用相關用量計劃的 API 金鑰來建立 UsagePlanKey
。下列範例示範如何使用 API Gateway REST API 來完成此作業,其中 n371pt
是用量計劃 ID,而 q5ugs7qjjh
是前述範例所傳回的範例 API keyId
。
POST /usageplans/n371pt/keys HTTP/1.1 Host: apigateway.
region
.amazonaws.com Authorization: ... { "keyId": "q5ugs7qjjh", "keyType": "API_KEY" }
將客戶與 API 金鑰相關聯
您必須將 ApiKey
customerId
的欄位更新為客戶的客戶 AWS Marketplace ID。這會將 API 金鑰與 AWS Marketplace 客戶相關聯,以啟用買方的計量與計費。下列程式碼範例會呼叫 API Gateway REST API 來執行這項操作。
PATCH /apikeys/q5ugs7qjjh Host: apigateway.
region
.amazonaws.com Authorization: ... { "patchOperations" : [{ "path" : "/customerId", "value" : "MARKETPLACE_CUSTOMER_ID
", "op" : "replace" }] }