APIGatewayをプライベートもパブリックも両方呼び出したい場合どうすれば良いか?
・回答:エンドポイント(execute-api)の[プライベート DNS 名を有効にする]をあえて無効にする。
※上記以外でも、[プライベート DNS 名を有効にする]を有効とした場合でも、パブリックAPIGatewayにカスタムドメインを設定したり
CloudFrontのオリジンにパブリックAPIGatewayを登録することで、プライベートもパブリックも両方呼び出すことは可能です。
今回の場合は「https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}」形式で呼び出す前提で記載します。
Aws/APIGateway/VPCエンドポイントとプライベートAPIの関連付けも参考にしてください。
[プライベート DNS 名を有効にする]を無効にした場合の接続結果は以下の図のイメージとなる。
・パブリックAPIGateway:ステージで表示されたURLで呼び出し可能
・プライベートAPIGateway:下記のように、[x-apigw-api-id]ヘッダーに[api-id]を指定して呼び出す。
curl https://{VPCエンドポイントのDNS名}/{stage} -H "x-apigw-api-id:{api-id}"