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 に送信できるようにします。

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

{ "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、API Gateway 用の AWS CLI、または API Gateway 用の AWS SDKを使用して、API Gateway UsagePlanproductCode フィールドを 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 キーの関連付け

ApiKeycustomerId フィールドをお客様の 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" }] }