API Gateway から REST API をエクスポートする - Amazon API Gateway

API Gateway から REST API をエクスポートする

API Gateway で REST API を作成および設定したら、API Gateway コンソールなどから API Gateway Export API (Amazon API Gateway Control Service の一部です) を使用して、API を OpenAPI ファイルにエクスポートできます。API Gateway Export API を使用するには、API リクエストに署名する必要があります。リクエストの署名の詳細については、「IAM ユーザーガイド」の「AWS API リクエストの署名」を参照してください。エクスポートされた OpenAPI 定義ファイルに、API Gateway 統合の拡張機能と、Postman 拡張機能を含めるオプションがあります。

注記

AWS CLI を使用して API をエクスポートする場合、次の例に示すように extensions パラメータを必ず含めて、x-amazon-apigateway-request-validator 拡張子が含まれるようにします。

aws apigateway get-export --parameters extensions='apigateway' --rest-api-id abcdefg123 --stage-name dev --export-type swagger latestswagger2.json

ペイロードが application/json 型でない場合、API をエクスポートすることはできません。エクスポートを試みると、JSON 本文モデルが見つからないことを示すエラーレスポンスが返されます。

REST API をエクスポートするリクエスト

Export API を使用すると、GET リクエストを送信し、URL パスの一部としてエクスポートされる API を指定することにより、既存の REST API をエクスポートします。リクエストの URL は次の形式です。

OpenAPI 3.0
https://<host>/restapis/<restapi_id>/stages/<stage_name>/exports/oas30
OpenAPI 2.0
https://<host>/restapis/<restapi_id>/stages/<stage_name>/exports/swagger

extensions クエリ文字列を追加して、(値 integration を使用) API Gateway 拡張を含めるか、(値 postman を使用) Postman 拡張を含めるかを指定できます。

さらに、Accept ヘッダーを application/json または application/yaml に設定して、それぞれ JSON 形式または YAML 形式で API 定義の出力を受け取ることができます。

API Gateway Export API を使用して GET リクエストを送信する詳細については、「GetExport」を参照してください。

注記

API でモデルを定義する場合、モデルをエクスポートする API Gateway の "application/json" のコンテンツタイプである必要があります。それ以外の場合、API Gateway は「Only found non-JSON body models for ...」というエラーメッセージとともに例外をスローします。

モデルはプロパティを含むか、特定の JSONSchema 型として定義される必要があります。

REST API OpenAPI 定義を JSON でダウンロードする

OpenAPI 定義を JSON 形式にして REST API をエクスポートおよびダウンロードするには、以下のようにします。

OpenAPI 3.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30 Host: apigateway.<region>.amazonaws.com Accept: application/json
OpenAPI 2.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger Host: apigateway.<region>.amazonaws.com Accept: application/json

ここで、<region> はたとえば us-east-1 にできます。API Gateway が利用可能なすべてのリージョンのリストについては、「リージョンとエンドポイント」を参照してください。

REST API OpenAPI 定義を YAML でダウンロードする

OpenAPI 定義を YAML 形式にして REST API をエクスポートおよびダウンロードするには、以下のようにします。

OpenAPI 3.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30 Host: apigateway.<region>.amazonaws.com Accept: application/yaml
OpenAPI 2.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger Host: apigateway.<region>.amazonaws.com Accept: application/yaml

Postman 拡張機能を使用して REST API OpenAPI 定義を JSON でダウンロードする

Postman を使用して OpenAPI 定義を JSON 形式にして REST API をエクスポートおよびダウンロードするには、以下のようにします。

OpenAPI 3.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30?extensions=postman Host: apigateway.<region>.amazonaws.com Accept: application/json
OpenAPI 2.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger?extensions=postman Host: apigateway.<region>.amazonaws.com Accept: application/json

API Gateway 統合を使用して REST API OpenAPI 定義ファイルを YAML でダウンロードする

OpenAPI 定義を YAML 形式にして API Gateway 統合を使用して REST API をエクスポートおよびダウンロードするには、以下のようにします。

OpenAPI 3.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/oas30?extensions=integrations Host: apigateway.<region>.amazonaws.com Accept: application/yaml
OpenAPI 2.0
GET /restapis/<restapi_id>/stages/<stage_name>/exports/swagger?extensions=integrations Host: apigateway.<region>.amazonaws.com Accept: application/yaml

API Gateway コンソールを使用して REST API をエクスポートする

REST API をステージにデプロイしたら、次に API Gateway コンソールを使用してステージ内の API を OpenAPI ファイルにエクスポートすることができます。

API Gateway コンソールの [ステージ] ペインで、[ステージアクション][エクスポート] を選択します。


                      API Gateway コンソールを使用して REST API をエクスポートする

[API 仕様タイプ][フォーマット][拡張機能] を指定して API の OpenAPI 定義をダウンロードします。