API Gateway で API エンドポイントタイプを変更する (パブリックまたはプライベート)
API エンドポイントタイプを変更するには、API の設定を更新する必要があります。API Gateway コンソール、AWS CLI、または API Gateway 用の AWS SDK を使用して、既存の API タイプを変更できます。現在の変更が完了するまでそのエンドポイントタイプを再度変更することはできませんが、API は使用可能になります。
次のエンドポイントタイプの変更がサポートされています。
-
エッジ最適化からリージョンまたはプライベートへ
-
リージョンからエッジ最適化またはプライベートへ
-
プライベートからリージョンへ
プライベート API をエッジ最適化 API に変更することはできません。
パブリック API をエッジ最適化からリージョン、またはその逆に変更する場合、エッジ最適化 API とリージョン API とでは動作が異なることがあります。たとえば、エッジ最適化 API は Content-MD5
ヘッダーを削除します。バックエンドに渡される MD5 ハッシュ値はすべて、リクエスト文字列パラメータまたは body プロパティで表現できます。ただし、リージョン API は (ヘッダー名を別の名前に再マップする場合がありますが) このヘッダーを渡します。この違いを理解することは、エッジ最適化 API をリージョン API に更新する方法、またはリージョン API をエッジ最適化 API に更新する方法を決めるのに役立ちます。
API Gateway コンソールを使用して API エンドポイントの種類を変更する
API の API エンドポイントタイプを変更するには、次の一連の手順のいずれかを実行します。
エンドポイントをリージョン別またはエッジ最適化 (またはその逆) からパブリックに変換するには
-
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 REST API を選択します。
[API 設定] を選択します。
[API の詳細] セクションで [編集] を選択します。
-
API エンドポイントタイプには、[エッジ最適化] または [リージョン別] を選択します。
-
[Save changes] (変更の保存) をクリックします。
-
API を再デプロイします。これにより変更が有効になります。
プライベートエンドポイントをリージョンエンドポイントに変換するには
-
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 REST API を選択します。
-
VPC の外部からの API コールも VPC 内部と同様に成功するように、API のリソースポリシーを編集して、VPC または VPC エンドポイントの指定を削除します。
[API 設定] を選択します。
[API の詳細] セクションで [編集] を選択します。
-
[API エンドポイントタイプ] で、[リージョン別] を選択します。
-
[Save changes] (変更の保存) をクリックします。
-
リソースポリシーを API から削除します。
-
API を再デプロイします。これにより変更が有効になります。
リージョンエンドポイントをプライベートエンドポイントに変換するには
-
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 REST API を選択します。
-
VPC または VPC エンドポイントへのアクセスを許可するリソースポリシーを作成します。詳細については、「ステップ 3: プライベート API のリソースポリシーをセットアップする」を参照してください。
[API 設定] を選択します。
[API の詳細] セクションで [編集] を選択します。
-
[API エンドポイントタイプ] で、[プライベート] を選択します。
-
(オプション) [VPC エンドポイント ID] で、プライベート API と関連付ける VPC エンドポイント の ID を選択します。
-
[Save changes] (変更の保存) をクリックします。
-
API を再デプロイします。これにより変更が有効になります。
AWS CLI を使用して API エンドポイントタイプを変更する
AWS CLI を使用して
という API の ID を持つエッジ最適化の API を更新するには、以下のように update-rest-api の を呼び出します。{api-id}
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 エンドポイントタイプの更新には適用されません。