View a markdown version of this page

AWS Marketplace で API Gateway API を販売する - Amazon API Gateway

AWS Marketplace で API Gateway API を販売する

API を作成、テスト、デプロイしたら、それらを API Gateway 使用量プランにパッケージ化し、AWS Marketplace を通じてそのプランを SaaS (Software-as-a-Service) 製品として販売します。製品にサブスクライブする 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 キーの関連付けが必要です。詳細については、以降のセクションで説明します。

API を AWS Marketplace で SaaS 製品として販売する方法の詳細については、「AWS Marketplace ユーザーガイド」を参照してください。

API Gateway を使用して AWS Marketplace 統合を初期化する

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

への製品の出品AWS Marketplace

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

計測ロールの作成

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

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

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

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

JSON
{ "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 UsagePlan の 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 は、AWS Marketplace で製品を掲載したときに登録した SaaS サブスクリプション URL に POST リクエストを送信します。POST リクエストには、購入者情報を含む x-amzn-marketplace-token パラメータが付属しています。「SaaS の顧客のオンボーディング」の手順に従って、開発者ポータルアプリケーションでこのリダイレクトを処理します。

お客様のサブスクリプションリクエストに応答して、AWS Marketplace はサブスクライブ可能な Amazon SNS トピックに subscribe-success 通知を送信します。(「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" }] }