GCPにもAWSにも外部IPを持たないインスタンスを作ることができます。
AWSの場合はプライベートサブネットで作成したEC2インスタンスへアクセスをさせるためには、ALBやNLBなどのロードバランサーを使うかプロキシサーバを経由して外部アクセスを許容する方法 が存在しています。
この方法はパブリックサブネットにネットからの通信を経由する何かをつくり、そこを経由してインスタンスにアクセスしているので非常にイメージがつきやすいです。
GCPの場合
一方でGCPの場合は、外部IPを持たないインスタンスにアクセスをする際にLBを経由するのはAWSと同じですが、そのLBがVPCには存在しません。
公式サイトにもあるように、外部通信を受け付けるためのLBを配置しそれを経由してインスタンスに通信する場合は 二つのグローバルIPをファイヤーウォールに設定する必要 があります。
外部 HTTP(S) 負荷分散の概要 | Google Cloud
このことからGCPでは 外部IPを持たないインスタンスに対してグローバルIPの通信が届くこと がわかります。
ん?それって外部IP持ってるってことじゃないの…?と頭がこんがらがってきました。
グローバルIPからの通信が全部とどく?
No です。GCPでは特殊なケースとしてLBの例が存在しています。
GCPでは以下の通信のみを特別に外部IPを持たないインスタンスでも受け入れます。
- IAP (Identity Aware Proxy)
- ロードバランサー
- DNS
詳細はこちら-> ルートの概要 | VPC | Google Cloud
まとめ
まとめると、GCPは外部公開のために特殊なIPに関しては外部IP無しでも通信を受信できます。
ここがAWSとは異なるので理解が難しいところですね。