~~NOCACHE~~ ## プライベートもパブリックもアクセス可能とする方法 APIGatewayをプライベートもパブリックも両方呼び出したい場合どうすれば良いか? ・回答:エンドポイント(execute-api)の[プライベート DNS 名を有効にする]をあえて無効にする。 ※上記以外でも、[プライベート DNS 名を有効にする]を有効とした場合でも、パブリックAPIGatewayにカスタムドメインを設定したり  CloudFrontのオリジンにパブリックAPIGatewayを登録することで、プライベートもパブリックも両方呼び出すことは可能です。 %%今回の場合は「https://{rest-api-id}.execute-api.{region}.amazonaws.com/{stage}」形式で呼び出す前提で記載します。%% [[Aws:APIGateway:AssociatingVpcEndpointsWithPrivateApi|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}"%% {{:Aws:APIGateway:pasted:20210525-142640.png?direct 800x0}} ### [プライベート DNS 名を有効にする]を有効にする。 [プライベート DNS 名を有効にする]を有効にした場合の接続結果は以下の図のイメージとなる。 ・パブリックAPIGateway:VPCエンドポイントに接続してしまう為、ステージで表示されたURLで呼び出せない。[x-apigw-api-id]ヘッダーを指定してもNG ・プライベートAPIGateway:ステージで表示されたURLで呼び出し可能。[x-apigw-api-id]ヘッダーを指定してもOK {{:Aws:APIGateway:pasted:20210525-154948.png?direct 800x0}} {{tag>AWS APIGateway}}