説明
awsvpcモードでは、タスクごとに専用のネットワークインターフェイスが割り当てられ、タスク単位でセキュリティグループを適用できます。Fargateではこのモードが必須です。EC2上のタスクでは、ワークロードに適したモードを選択してください。
想定される影響
hostやbridgeでは、awsvpcのようにタスク単位でセキュリティグループを直接適用できません。一方、noneは外部とのネットワーク通信を提供しないため、それ自体が外部公開を意味するわけではありません。
対処方法
タスク単位のネットワーク制御が必要な場合は、network_mode = "awsvpc"を設定し、サービスのサブネットとセキュリティグループを構成してください。変更前に、ポートマッピングと通信要件を確認してください。
例
以下は、ネットワークモードのみを比較するEC2タスク定義の抜粋です。必須のコンテナー定義は省略しています。noneからawsvpcへ変更すると、ネットワーク通信が可能になります。
変更前
hcl
resource "aws_ecs_task_definition" "example" {
family = "service"
network_mode = "none"
volume {
name = "service-storage"
host_path = "/ecs/service-storage"
}
}
変更後
hcl
resource "aws_ecs_task_definition" "example" {
family = "service"
network_mode = "awsvpc"
volume {
name = "service-storage"
host_path = "/ecs/service-storage"
}
}