Quantcast
Channel: kariaの日記 @ Alice::Diary
Viewing all articles
Browse latest Browse all 130

Amazon ECSにおけるnetworkMode,パブリックIPアドレス,VPC外部との通信可否を整理する

$
0
0

Amazon ECSにおいて、EC2とFargateそれぞれの場合にどういうネットワーク設定にできるのかすぐ忘れるので、早見表にした。

機能名EC2Fargate
networkMode: awsvpc対応対応
networkMode: bridge対応非対応
networkMode: host対応非対応
networkMode: none対応非対応
awsvpcにおけるパブリックIPアドレスつけられないつけられる

※表を簡素化するためOSがWindowsの場合は除外しLinuxに限定した。

networkModeをbridgeとかhostにしたタスク定義は、Fargateにそのまま持って行っても起動することができない。

注目ポイントとしては、ECS on EC2かつawsvpcを採用した場合にタスクにはパブリックIPアドレスを付与することができない。このため、タスクがLBを介さずにVPC外部(インターネット)と通信したい場合、プライベートサブネットにタスクを配置することとNAT Gatewayを設置することが必須要件となる。

このことはAmazon ECS開発者ガイドにも記載がある。

Amazon EC2Linuxインスタンスで awsvpc ネットワークモードを使用するタスクをホストする場合、タスク ENI にはパブリック IP アドレスが付与されません。インターネットにアクセスするには、NAT ゲートウェイを使用するよう設定されたプライベートサブネットでタスクを起動する必要があります。詳細については、「AmazonVPCユーザーガイド」の「NAT ゲートウェイ」を参照してください。インバウンドのネットワークアクセスは、プライベート IP アドレスを使用する VPC内からのものか、その VPCからロードバランサーを経由させルーティングされたものである必要があります。パブリックサブネット内で起動されたタスクは、インターネットにアクセスできません。

docs.aws.amazon.com

つまり、ECSタスクがLBを介さずにVPC外部と通信できるのかできないのかに着目して表にすると以下の様になる。

networkModeVPCサブネットの種別EC2のタスクFargateのタスク
awsvpcパブリック外部通信できない外部通信できる
awsvpcプライベート外部通信できる外部通信できる
bridge,hostパブリック外部通信できる(起動できない)
bridge,hostプライベート外部通信できる(起動できない)

パブリックサブネットにタスクを配置する場合、EC2とFargateでnetworkModeを別にしなければならない。あまりないかもしれないが、もしパブリックサブネットでEC2/Fargateが混在する環境ではタスク定義を別々にしなければならず不便を強いられる。パブリックIPアドレスは課金されるようになったことも考慮すると、基本的にはプライベートサブネットを利用するべきだろう。


Viewing all articles
Browse latest Browse all 130

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>