Amazon API Gateway
開発者ガイド

API Gateway で API エンドポイントタイプを変更する (パブリックまたはプライベート)

API エンドポイントタイプを変更するには、API の設定を更新する必要があります。既存の API タイプを変更するには、API Gateway コンソール、AWS CLI、API Gateway 用 AWS SDK、または API Gateway REST API を使用します。更新オペレーションが完了するまでに最大 60 秒かかることがあります。この間は、API は使用できません。

次のエンドポイントタイプの変更がサポートされています。

  • エッジ最適化からリージョンへ

  • リージョンからエッジ最適化へ

  • エッジ最適化またはリージョンからプライベートへ

  • プライベートからリージョンへ

プライベート API をエッジ最適化 API に変更することはできません。

パブリック API をエッジ最適化からリージョン、またはその逆に変更する場合、エッジ最適化 API とリージョン API とでは動作が異なることがあります。たとえば、エッジ最適化 API は Content-MD5 ヘッダーを削除します。バックエンドに渡される MD5 ハッシュ値はすべて、リクエスト文字列パラメータまたは body プロパティで表現できます。しかし、リージョン API は、場合によってはヘッダー名を別の名前に再マップするものの、このヘッダーを渡します。 この違いを理解することは、エッジ最適化 API をリージョン API に更新する方法、またはリージョン API からエッジ最適化 API に更新する方法を決めるのに役立ちます。

API Gateway コンソールを使用して API エンドポイントタイプを変更する

API の API エンドポイントタイプを変更するには、次の一連の手順のいずれかを実行します。

エンドポイントをパブリックからリージョンまたはエッジ最適化 (またはその逆) に変換するには

  1. API Gateway コンソールにサインインし、プライマリナビゲーションペインで [APIs (API)] を選択します。

  2. [+ Create API] の下にある API の設定 (歯車アイコン) を選択します。

  3. [Endpoint Configuration] で、[Endpoint Type] オプションを [Edge Optimized] から [Regional] に、または [Regional] から [Edge Optimized] に変更します。

  4. [Save] を選択して、更新を開始します。

プライベートエンドポイントをリージョンエンドポイントに変換するには

  1. API Gateway コンソールにサインインし、プライマリナビゲーションペインで [APIs (API)] を選択します。

  2. [+ Create API] の下にある API の設定 (歯車アイコン) を選択します。

  3. VPC の外部からの API コールも VPC 内部と同様に成功するように、API のリソースポリシーを編集して、VPC または VPC エンドポイントの指定を削除します。

  4. [Endpoint Type (エンドポイントタイプ)] を Regional に変更します。

  5. [Save] を選択して、更新を開始します。

  6. リソースポリシーを API から削除します。

  7. API を再デプロイします。これにより変更が有効になります。

AWS CLI を使用して API エンドポイントタイプを変更する

AWS CLI コマンドを使用して {api-id} のエッジ最適化 API を更新するには、以下のように restapi:update を呼び出します。

aws apigateway update-rest-api \ --rest-api-id {api-id} --patch-operations op=replace,path=/endpointConfiguration/types/EDGE,value=REGIONAL

成功のレスポンスには、200 OK ステータスコードと以下のようなペイロードが含まれます。

{ "createdDate": "2017-10-16T04:09:31Z", "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints", "endpointConfiguration": { "types": "REGIONAL" }, "id": "0gsnjtjck8", "name": "PetStore imported as edge-optimized" }

逆に、以下のようにリージョン API をエッジ最適化 API に更新します。

aws apigateway update-rest-api \ --rest-api-id {api-id} --patch-operations op=replace,path=/endpointConfiguration/types/REGIONAL,value=EDGE

put-rest-api は API 定義の更新用なので、API エンドポイントタイプの更新には適用されません。

API Gateway REST API を使用して API エンドポイントタイプを変更する

API Gateway REST API を使用して {api-id} のエッジ最適化 API を更新するには、以下のように restapi:update を呼び出します。

PATCH /restapis/{api-id} { "patchOperations" : [{ "op" : "replace", "path" : "/endpointConfiguration/types/EDGE", "value" : "REGIONAL" }] }

成功のレスポンスには、200 OK ステータスコードと以下のようなペイロードが含まれます。

{ "createdDate": "2017-10-16T04:09:31Z", "description": "Your first API with Amazon API Gateway. This is a sample API that integrates via HTTP with our demo Pet Store endpoints", "endpointConfiguration": { "types": "REGIONAL" }, "id": "0gsnjtjck8", "name": "PetStore imported as edge-optimized" }

逆に、リージョン API をエッジ最適化 API に更新するには、以下のように restapi:update を呼び出します。

PATCH /restapis/{api-id} { "patchOperations" : [{ "op" : "replace", "path" : "/endpointConfiguration/types/REGIONAL", "value" : "EDGE" }] }

restapi:put は API 定義の更新用なので、API エンドポイントタイプの更新には適用されません。