プライベート API を呼び出す方法 - Amazon API Gateway

プライベート API を呼び出す方法

プライベート API は VPC 内からのみアクセスでき、リソースポリシーで、設定した VPC および VPC エンドポイントからのアクセスを許可する必要があります。プライベート API へのアクセス方法は、VPC エンドポイントでプライベート DNS を有効にしたかどうかによって異なります。たとえば、AWS Direct Connect 経由でオンプレミスネットワークからプライベート API にアクセスする場合、VPC エンドポイントでプライベート DNS が有効になります。このような場合は、「エンドポイント固有のパブリック DNS ホスト名を使用したプライベート API の呼び出し」で説明されている手順に従います。

プライベート API のデプロイが完了したら、プライベート DNS 経由 (プライベート DNS を有効にしている場合) およびパブリック DNS 経由でアクセスできます。

プライベート API の DNS 名を取得するには、以下を実行します。

  1. https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールにサインインします。

  2. 左のナビゲーションペインで、[エンドポイント] を選択し、API Gateway 用のインターフェイス VPC エンドポイントを選択します。

  3. [詳細] ペインで、[DNS 名] フィールドに 5 つの値が表示されます。最初の 3 つは API 用のパブリック DNS 名です。残りの 2 つはプライベート DNS 名です。

プライベート DNS 名を使用してプライベート API を呼び出す

警告

API Gateway のインターフェイス VPC エンドポイントの作成中に、[プライベート DNS 名を有効にする] オプションを選択すると、VPC エンドポイントが存在する VPC はパブリック (エッジ最適化およびリージョン別) API にアクセスできなくなります。詳細については、「VPC から API ゲートウェイ API に接続するときに HTTP 403 Forbidden エラーが発生するのはなぜですか?」を参照してください。

プライベート DNS を有効にしている場合は、次のようにプライベート DNS 名を使用してプライベート API にアクセスできます。

{restapi-id}.execute-api.{region}.amazonaws.com

API を呼び出すためのベース URL は次の形式です。

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

たとえば、この例で GET /pets および GET /pets/{petId} メソッドをセットアップし、REST API ID が 01234567ab、リージョンが us-west-2 であるとすると、ブラウザに次の URL を入力して API をテストできます。

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

および

https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/1

または、以下の cURL コマンドを使用できます。

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets

および

curl -X GET https://01234567ab.execute-api.us-west-2.amazonaws.com/test/pets/2

AWS Direct Connect を使用したプライベート API へのアクセス

AWS Direct Connect を使用して、オンプレミスネットワークから Amazon VPC に専用のプライベート接続を確立し、パブリック DNS 名を使用してその接続経由でプライベート API エンドポイントにアクセスすることもできます。

オンプレミスネットワークからプライベート DNS 名を使用してプライベート API にアクセスすることはできません。

Route53 エイリアスを使用したプライベート API へのアクセス

VPC エンドポイントとプライベート API の関連付けまたは関連付け解除を行うには、「VPC エンドポイントとプライベート REST API の関連付けまたは関連付けの解除」で説明されている手順を使用します。

プライベート API の REST API ID を REST API の呼び出し元の VPC エンドポイントに関連付けると、Route53 エイリアスを使用して API を呼び出すために、次の形式のベース URL を使用できます。

生成されたベース URL は次の形式になります。

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

たとえば、この例で GET /pets および GET /pets/{petId} メソッドをセットアップし、API の API ID が 01234567ab、VPC エンドポイント ID が vpce-01234567abcdef012、リージョンが us-west-2 であったと仮定すると、API を次のように呼び出すことができます。

curl -v https://01234567ab-vpce-01234567abcdef012.execute-api.us-west-2.amazonaws.com/test/pets/

エンドポイント固有のパブリック DNS ホスト名を使用したプライベート API の呼び出し

エンドポイント固有のパブリック DNS ホスト名を使用してたプライベート API にアクセスできます。これらは、プライベート API 用の VPC エンドポイント ID または API ID を含むパブリック DNS ホスト名です。

生成されたベース URL は次の形式になります。

https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/{stage}

たとえば、この例で GET /pets および GET /pets/{petId} メソッドをセットアップし、API の API ID が 01234567ab で、パブリック DNS ホスト名が vpce-01234567abcdef012-01234567、リージョンが us-west-2 であるとすると、次の例のように、cURL コマンドの Host ヘッダーを使用して、VPCE ID を介して API をテストできます。

curl -v https://vpce-01234567abcdef012-01234567.execute-api.us-east-1.vpce.amazonaws.com/test/pets -H 'Host: 01234567ab.execute-api.us-west-2.amazonaws.com'

または、次の形式の cURL コマンドの x-apigw-api-id ヘッダー を使用して API ID を経由してプライベート API にアクセスできます。

curl -v https://{public-dns-hostname}.execute-api.{region}.vpce.amazonaws.com/test -H'x-apigw-api-id:{api-id}'