今回はTipsと言えるほどのものでもないのですが、このことを解説する記事がなかなか見つからなかったので書かせていただきました。
GAEを使ってサービスを作成するにあたって、同じVirtual Private Cloud(VPC)内のみの通信を許可したいことはよくある話だと思います。
例を言いますと下図のような構成のシステムを組んだとします。
こちらの例では
①Google Compute Engine(GCE)からGAE(GAEから見て内向き)
②GAEからcloud SQL(GAEから見て外向き)
の2つ、GAEが絡む内部通信があります。
特に②のようなGAEからcloud SQLへの通信はよくよくある例かなと思います。
ここでGAEから見て外向きに関しては調べるとすぐ情報が見つかります。
(スタンダード環境かフレキシブル環境かによりますが)それぞれ公式ドキュメントにズバリの記述があります。
このように外向きの内部通信においてはドキュメントにやり方がズバリと記載されています。
しかし、今回行いたかったのはGAEへの内向きの内部通信でした。
触ったことある方はわかると思いますが、GAEはデプロイが完了したときに
https://PROJECT_ID.REGION_ID.r.appspot.com
の書式のURLを発行するのみでGCEみたいにパブリックIPやプライベートIPという概念がそもそもありません。
さらに、同じようなことを行いたい方も少なくはないはずのこのクエスチョンですが、これに対する回答は調べてみてもズバリなものがなかなか見つかりません。。
さてどうしたものでしょうか、、
もったいぶるほどでもない情報なのでそのズバリを書いてしまいます。
実は、GAEは内部通信が可能な状況にあるサービスから
https://PROJECT_ID.REGION_ID.r.appspot.com
の書式のURLへアクセスすると勝手に内部通信でつながってくれます。
確認したい場合は、GAEのコンソール画面のサービスへ飛んで、
「INGRESS設定を編集」から内部のみ許可をして
同じVPC内のGCE等からcurlコマンドで先のURLへの接続を試してみてください。
こちらで内部通信が行われていることが確認できます。
おわりに
今回いろいろ調べてここまでたどり着きましたが、わかってしまうととてもあっけない答えでした。
もしかするとGAEを知らないほうがなんとなくですぐに答えにたどり着いていたかもしれません。
この記事が同じことを調査するエンジニアさんの力になれれば幸いです。