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 キーの関連付けが必要です。詳細については、以降のセクションで説明します。
顧客が AWS Marketplace で製品を購入できるようにするには、開発者ポータル (外部アプリケーション) を AWS Marketplace に登録する必要があります。開発者ポータルは、AWS Marketplace からリダイレクトされたサブスクリプションリクエストを処理する必要があります。
サンプルの開発者ポータルアプリケーションについては、「API Gateway 開発者ポータル」を参照してください。
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 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" }] }