目次

プライベートもパブリックもアクセス可能とする方法

APIGatewayをプライベートもパブリックも両方呼び出したい場合どうすれば良いか?

・回答:エンドポイント(execute-api)の[プライベート DNS 名を有効にする]をあえて無効にする。

※上記以外でも、[プライベート DNS 名を有効にする]を有効とした場合でも、パブリックAPIGatewayにカスタムドメインを設定したり
 CloudFrontのオリジンにパブリックAPIGatewayを登録することで、プライベートもパブリックも両方呼び出すことは可能です。

今回の場合は「https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}」形式で呼び出す前提で記載します。
Aws/APIGateway/VPCエンドポイントとプライベートAPIの関連付けも参考にしてください。

[プライベート DNS 名を有効にする]を無効にする。

[プライベート DNS 名を有効にする]を無効にした場合の接続結果は以下の図のイメージとなる。
・パブリックAPIGateway:ステージで表示されたURLで呼び出し可能
・プライベートAPIGateway:下記のように、[x-apigw-api-id]ヘッダーに[api-id]を指定して呼び出す。
 curl https://{VPCエンドポイントのDNS名}/{stage} -H "x-apigw-api-id:{api-id}"

[プライベート DNS 名を有効にする]を有効にする。

[プライベート DNS 名を有効にする]を有効にした場合の接続結果は以下の図のイメージとなる。
・パブリックAPIGateway:VPCエンドポイントに接続してしまう為、ステージで表示されたURLで呼び出せない。[x-apigw-api-id]ヘッダーを指定してもNG
・プライベートAPIGateway:ステージで表示されたURLで呼び出し可能。[x-apigw-api-id]ヘッダーを指定してもOK