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 Marketplaceapigateway
タイプの 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 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" }] }