ALBのアベイラビリティーゾーンはパブリックサブネットに配置しなければならない


はじめに

複数のECSをマルチAZにて配置してALBでバランシングをする一般的な構成を
構築していたのですが思わぬところで躓いたのでその解決方法になります。

失敗した構成

下記の図のような構成で外部向けにALBを作成しアベラビリティーゾーンに、
マルチAZでプライベートサブネットを設定。
外に出るときはパブリックサブネットに配置したNatGateWay経由で出て行くような構成を考えました。

が、、
このような構成で構築してしまうとそもそも外から繋がらなくなってしまいました。。
EC2→ロードバランサー→サブネットを編集で見てみると下記文言が。。

「インターネット向けロードバランサーを作成中ですが、次のサブネットにはアタッチされたインターネットゲートウェイが存在しません」

原因

外部向けALBのアベライビティーゾーンはプライベートサブネットに配置してはならず、
パブリックサブネットに置かなければならない。

解決後の構成

ALBのアベライビティーゾーンをパブリックサブネットに変更、
パブリックサブネットを経由してプライベートサブネットに配置したECSにアクセス、
NatGateWay経由で外にでる構成に変更。
これでECSをプライベートサブネットに配置しつつマルチAZ構成が実現できました。

まとめ

はじめてAWSの構成を1から構築したこともあり色々つまずきました。。
AWSはネットワークの構成を組むのが最初の難関だと思いました。
設定がミスっていても設定ができてしまうところが難しい。。