ECS 01 - Network Mode
Network Mode とは
タスク定義で指定する Network Driver の種類のこと。
- bridge
- host
- awsvpc
- none
が存在。
以下で概要を説明。
bridge
タスクは Docker の組み込み仮想ネットワークを使用して、各コンテナインスタンス内で実行される。
通常の Docker と一緒。
host
タスクは Docker の組み込み仮想ネットワークをバイパスし、コンテナポートは EC2 インスタンスのネットワークインターフェイスに直接マッピングされる。
このモードでポートマッピングが使用されている場合、1 つのコンテナインスタンスで同じタスクのインスタンスを複数実行することはできない。
これも通常の Docker とイメージは一緒。
awsvpc
タスクに ENI を割り当てる。
そのため、タスクごとに IP アドレスが払い出され、かつセキュリティグループなどもタスクごとに設定可能になる。
host および awsvpc では ENI とコンテナが直接バイパスされるのでネットワークパフォーマンスが優れている。
イチオシの機能なので後ほど詳細を記載する。
none
タスクのコンテナの外部接続がなくなるので、コンテナの定義にポートマッピングを指定することができなくなる。
awsvpc ネットワーキングモードの旨味
EC2 インスタンスと同じネットワーキングプロパティが ECS タスクに提供されるので、メリットが多い。
- ネットワークモニタリング
タスクに独自の ENI が払い出されるので、 VPC フローログなどを活用してトラフィックをモニタリングできる。
そのためセキュリティ的メリットもある。 - localhost 通信
同じタスクに所属するコンテナ同士が localhost で通信できる。 - トランキング
ENI トランキングにより、コンテナインスタンスにより多くのタスクを配置できるようになる。
5 倍 ~ 10 倍くらいに拡張できる。
Elastic Network Interface のトランキング
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/container-instance-eni.html
Ref docs
タスクネットワーキングと awsvpc ネットワークモード
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-networking.html
Task Networking in AWS Fargate
https://aws.amazon.com/jp/blogs/compute/task-networking-in-aws-fargate/
