メニュー
Amazon API Gateway
開発者ガイド

AWS Marketplace を通じた API GatewayAPI の販売

API を作成、テスト、デプロイしたら、API Gateway 使用量プランにパッケージ化し、AWS Marketplace を通じてプランを Software as a Service (SaaS) 製品として販売します。製品にサブスクライブする API の購入者には、使用量プランに対して行われたリクエストの数に基づいて AWS Marketplace により請求されます。

AWS Marketplace で API を販売するには、販売チャネルをセットアップして AWS Marketplace と API Gateway を統合する必要があります。一般に、これには AWS Marketplace への製品の掲載、API Gateway が使用状況メトリクスを AWS Marketplace に送信できるようにする適切なポリシーを持つ IAM ロールの設定、AWS Marketplace 製品と API Gateway 使用プランの関連付け、AWS Marketplace の購入者と API Gateway API キーの関連付けが必要です。詳細については、以降のセクションで説明します。

顧客が AWS Marketplace で製品を購入できるようにするには、開発者ポータル (外部アプリケーション) を AWS Marketplace に登録する必要があります。開発者ポータルは、AWS Marketplace からリダイレクトされたサブスクリプションリクエストを処理する必要があります。

API を AWS Marketplace で SaaS 製品として販売する方法の詳細については、AWS Marketplace SaaS Subscriptions - Seller Integration Guide を参照してください。

API Gateway との AWS Marketplace の統合の初期化

以下のタスクは、API Gateway との AWS Marketplace の統合を初期化する 1 回限りのタスクです。これにより、API を SaaS 製品として販売できるようになります。

AWS Marketplace への製品の掲載

使用量プランを SaaS 製品として掲載するには、AWS Marketplace を通じて製品ロードフォームを送信します。製品には、requests タイプの apigateway というディメンションが含まれている必要があります。このディメンションは、リクエストあたりの料金を定義し、API へのリクエストを計測するために API Gateway により使用されます。

計測ロールの作成

次の実行ポリシーと信頼ポリシーを持つ ApiGatewayMarketplaceMeteringRole という名前の IAM ロールを作成します。このロールでは、API Gateway が使用状況メトリクスを自動的に AWS Marketplace に送信します。

計測ロールの実行ポリシー

Copy
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "aws-marketplace:BatchMeterUsage", "aws-marketplace:ResolveCustomer" ], "Resource": "*", "Effect": "Allow" } ] }

計測ロールの信頼関係ポリシー

Copy
{ "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、API Gateway 用の AWS CLI、または API Gateway 用の AWS SDK を使用し、API Gateway UsagePlanproductCode フィールドを AWS Marketplace 製品コードに設定して関連付けを有効します。次のコード例では、API Gateway REST API が使用されています。

Copy
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 リクエストを、 AWS Marketplace に製品を掲載するときに登録した SaaS サブスクリプション URL に転送します。POST リクエストには、購入者情報を含む x-amzn-marketplace-token ヘッダーパラメーターが付属しています。SaaS Seller Integration Guide の「Register Application」セクションにある手順に従って、開発者ポータルアプリケーションでこのリクエストを処理します。

顧客のサブスクリプションリクエストに応答して、AWS Marketplace は subscribe-success 通知を、サブスクライブ可能な Amazon SNS トピックに送信します (SaaS Seller Integration Guide のステップ 6.4 を参照)。顧客サブスクリプションリクエストを受け入れるには、顧客の 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 キーを作成します。

Copy
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 キーを取得する方法を示しています。

Copy
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 です。

Copy
POST /usageplans/n371pt/keys HTTP/1.1 Host: apigateway.region.amazonaws.com Authorization: ... { "keyId": "q5ugs7qjjh", "keyType": "API_KEY" }

顧客と API キーの関連付け

ApiKeycustomerId フィールドを顧客の AWS Marketplace 顧客 ID に更新する必要があります。これにより、API キーと AWS Marketplace 顧客が関連付けられ、購入者の計測と請求が可能になります。次のコード例では、それを行うために API Gateway REST API を呼び出します。

Copy
PATCH /apikeys/q5ugs7qjjh Host: apigateway.region.amazonaws.com Authorization: ... { "patchOperations" : [{ "path" : "/customerId", "value" : "MARKETPLACE_CUSTOMER_ID", "op" : "replace" }] }