1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ECSのawsvpcモードでPORTSが入らない

Posted at

ECSのネットワークモードについて

ECS(on EC2)のネットワークモードはhost,bridge,awsvpcの3種類がある。

コンテナのネットワークモードをawsvpcにすることによってホスト跨ぎの通信ができ、またセキュリティグループの設定も可能なので推奨方法。

awsvpcモードを使おうとした

使おうとしたが、はまった
症状としては、
・EC2からタスク定義で指定したポートからアクセスできない
・EC2からdocker psで確認すると、PORTSにポート番号が入っていない

[ec2-user@ip-10-0-0-76 ~]$ docker ps
CONTAINER ID   IMAGE
        COMMAND                  CREATED          STATUS
PORTS     NAMES
63fde9618005   731221110857.dkr.ecr.ap-northeast-1.amazonaws.com/prod-ecr:1eeb0d9   "/bin/sh -c 'cd /usr…"   5 minutes ago    Up 5 minutes
          ecs-prod-a-task-9-prod-a-task-98e39bb29694b6e32400
7b7735d14db3   amazon/amazon-ecs-pause:0.1.0
        "/pause"                 6 minutes ago    Up 6 minutes
          ecs-prod-a-task-9-internalecspause-9a9da0c7ee828e8fe901
c3013cbeedce   amazon/amazon-ecs-agent:latest
        "/agent"                 17 minutes ago   Up 17 minutes (healthy) 

解決方法

  1. タスク定義を作成する。ポートはコンテナのポートのみ指定(することしかできない)
  2. LBを作成し、ターゲットグループを空にしておく(作成したリスナー・ターゲットグループは使わないが、無いと先に進めないので作成する)
  3. 作成したリスナーとターゲットグループを削除する
  4. ECSにてサービスを作成し、その中でリスナーとターゲットグループを新規作成する。こうすることで2で作成したLBに新規にリスナーとターゲットグループが紐づき、ターゲットグループにコンテナ(のENI)が紐づけされる

ポート周りの設定について

LBに80で受けてコンテナの8000ポートに飛ばす場合

対象 ポート 設定タイミング
Dockerfile 8000 環境変数等でセット
タスク定義 8000 タスク定義作成時
EC2のセキュリティグループ 解放しない -
コンテナのセキュリティグループ 8000 サービス作成時など
ALBのセキュリティグループ 80 ALB作成時など
コンテナのターゲットグループの登録ポート 8000 サービス作成時※
ALBのリスナー 80 サービス作成時※

※リスナーとターゲットグループはALB作成時にも無いと先に進めないが、最終的にサービス内で作成したものを使う。
80番ポートをALBの受け側に使いたい場合、ALB作成時に作った80番ポートのリスナーをサービス作成前に削除する必要がある。

下記はサービス内でのLB関係ポートの設定部分

~コンテナのターゲットグループの登録ポート~
スクリーンショット 2022-01-18 202528.png

~ALBのリスナー~
スクリーンショット 2022-01-18 202613.png

補足

awsvpcモードは推奨されている割にまとまった手順の情報が少なく、かなりはまったので。
なお、サービスが正常に起動してもPORTSにはポート情報は入らない。
これはawsvpcモードではコンテナはEC2とは独立したENIのポートを使っているため。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?