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

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

API エンドポイントタイプを変更するには、API の設定を更新する必要があります。API Gateway コンソール、AWS CLI、または API Gateway 用 AWS SDK を使用して、既存の 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 コンソール https://console.aws.amazon.com/apigateway にサインインします。

  2. REST API を選択します。

  3. [設定] を選択します。

  4. [エンドポイント設定] で、[エンドポイントタイプ] オプションを [Edge Optimized] から [Regional] に、または [Regional] から [Edge Optimized] に変更します。

  5. [Save Changes (変更を保存)] を選択して更新を開始します。

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

  1. API Gateway コンソール https://console.aws.amazon.com/apigateway にサインインします。

  2. REST API を選択します。

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

  4. [設定] を選択します。

  5. [エンドポイントタイプ] を Regional に変更します。

  6. [Save Changes (変更を保存)] を選択して更新を開始します。

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

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

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

AWS CLI を使用して {api-id} という API の ID を持つエッジ最適化の API を更新するには、以下のように update-rest-api を呼び出します。

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 エンドポイントタイプの更新には適用されません。