プライベート API の呼び出し - Amazon API Gateway

プライベート API の呼び出し

プライベート API は VPC 内から VPC エンドポイントを使用してのみ呼び出すことができます。プライベート API には、特定の VPC や VPC エンドポイントに API の呼び出しを許可するリソースポリシーが必要です。

プライベート API は、以下の方法で呼び出すことができます。

  • Route53 エイリアスを使用して API を呼び出します。これは、VPC エンドポイントを API に関連付けている場合にのみ使用できます。詳細については、「(オプション) VPC エンドポイントとプライベート API の関連付けまたは関連付けの解除」を参照してください。

  • プライベート DNS を使用して API を呼び出します。これは、VPC のプライベート DNS を有効にしている場合にのみ使用できます。

  • AWS Direct Connect を使用して API を呼び出します。

  • エンドポイント固有のパブリック DNS ホスト名を使用して API を呼び出します。

DNS 名を使用してプライベート API を呼び出すには、API の DNS 名を特定する必要があります。次の手順は、DNS 名を検索する方法を示しています。

AWS Management Console
DNS 名を見つけるには
  1. AWS Management Console にサインインして、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

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

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

AWS CLI

次の describe-vpc-endpoints コマンドを使用して、DNS 値を一覧表示します。

aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-01234567abcdef012

最初の 3 つは API のパブリック DNS 名です。残りの 2 つはプライベート DNS 名です。

Route53 エイリアスを使用したプライベート API の呼び出し

VPC エンドポイントとプライベート API を関連付けたり、関連付けを解除したりできます。詳細については、「(オプション) VPC エンドポイントとプライベート API の関連付けまたは関連付けの解除」を参照してください。

VPC エンドポイントをプライベート API に関連付けると、次のベース URL を使用して API を呼び出すことができます。

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

例えば、test ステージで GET /pets メソッドを設定し、REST 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 を有効にしている場合は、次のプライベート DNS 名を使用してプライベート API にアクセスできます。

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

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

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

例えば、test ステージで GET /pets メソッドをセットアップし、REST API ID が 01234567ab、リージョンが us-west-2 である場合は、ブラウザに次の URL を入力してプライベート API を呼び出すことができます。

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

または、次の cURL コマンドを使用してプライベート API を呼び出すこともできます。

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

VPC エンドポイントのプライベート DNS を有効にすると、パブリック API のデフォルトエンドポイントにアクセスできなくなります。詳細については、「API Gateway VPC エンドポイントからパブリック API に接続できないのはなぜですか?」を参照してください。

AWS Direct Connect を使用してプライベート API を呼び出す

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

プライベート DNS 名を使用すると、Amazon Route 53 Resolver インバウンドエンドポイントを設定してリモートネットワークからプライベート DNS のすべての DNS クエリを転送することによって、オンプレミスネットワークからプライベート API にアクセスすることもできます。詳細については、Amazon Route 53 デベロッパーガイドの「VPC へのインバウンド DNS クエリの転送」を参照してください。

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

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

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

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

例えば、test ステージで GET /pets メソッドを設定し、REST API ID が abc1234、パブリック DNS ホスト名が vpce-def-01234567、リージョンが us-west-2である場合、cURL コマンドの Host ヘッダーで VPCe ID を使用してプライベート API を呼び出すことができます。

curl -v https://vpce-def-01234567.execute-api.us-west-2.vpce.amazonaws.com/test/pets -H 'Host: abc1234.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/{stage} -H 'x-apigw-api-id:{api-id}'