

# API Gateway から REST API をエクスポートする
<a name="api-gateway-export-api"></a>

 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 リクエストの署名](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)」を参照してください。**エクスポートされた OpenAPI 定義ファイルに、API Gateway 統合の拡張機能と、[Postman](https://www.postman.com) 拡張機能を含めるオプションがあります。

**注記**  
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 をエクスポートするリクエスト
<a name="api-gateway-export-api-request"></a>

 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](https://docs.aws.amazon.com/apigateway/latest/api/API_GetExport.html)」を参照してください。

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

## REST API OpenAPI 定義を JSON でダウンロードする
<a name="api-gateway-export-api-download-swagger-json"></a>

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 を利用できるすべてのリージョンについては、「[リージョンとエンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region)」を参照してください。

## REST API OpenAPI 定義を YAML でダウンロードする
<a name="api-gateway-export-api-download-swagger-yaml"></a>

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 でダウンロードする
<a name="api-gateway-export-api-download-swagger-json-with-postman"></a>

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 でダウンロードする
<a name="api-gateway-export-api-download-swagger-yaml-with-apig"></a>

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 をエクスポートする
<a name="api-gateway-export-api-from-console"></a>

[REST API をステージにデプロイ](set-up-deployments.md#create-deployment)したら、次に API Gateway コンソールを使用してステージ内の API を OpenAPI ファイルにエクスポートすることができます。

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

![\[API Gateway コンソールを使用して REST API をエクスポートする\]](http://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/images/export-new-console.png)


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