AWS
ECS
Fargate

ECS+EC2で動いているサービスをFargateにのせ替える

AWS Fargate Advent Calendar 2017の15日目です

この記事ではECS+EC2で動いているサービスをECS+Fargateにのせ替えるときにやったことを紹介します

なお、作業にはAWSマネジメントコンソールを使用します

現在の構成について

構成としては下記の通り

basket.png

現在ECS+EC2で動かしているため、すでにイメージとタスクの登録は完了しています

アプリケーション内で使用するためにRDSとElasticacheと連携しています

タスク編集

まずタスクを編集します

1. Requires compatibilities を変更

FARGATEにチェックを入れます

Screenshot-2017-12-4 Amazon ECS(1).png

チェックを入れたら警告が出てきます

Screenshot-2017-12-4 Amazon ECS(2).png

警告の内容

The selected network mode is not compatible with Fargate.
Fargate requires the awsvpc network mode.

awsvps にネットワークモードを変えろとのこと

No Task execution role specified
Task execution role is required for logging and private image pulls for Fargate tasks. Failure to specify the role may lead to task failure or missing logs.

タスクで loggingprivate image を使うんだったらroleを設定しろとのこと

今回のプロジェクトでは private imageを使うので設定します

2. ネットワークモードを変更

awsvpc を選択します

Screenshot-2017-12-4 Amazon ECS(2) 2.png

3. Task execution role を変更

ecsTaskExecutionRole を設定しました

4. Task size を設定

Screen Shot 2017-12-07 at 20.30.10.png

5. 保存

保存します
コンテナの内容については今回特に変更がないのでそのままです

Fargate用のサービスを追加

サービスを追加します

1. 作成ボタンを押す

Screenshot-2017-12-4 Amazon ECS(6).png

2. サービスの設定をする

項目を入力していきます

  • Launch TypeFARGATE を選択します

  • タスク定義は先程作成したものを選択します

Screenshot-2017-12-4 Amazon ECS(8).png

3. ネットワーク構成

VPCとサブネットは適宜設定します

Screenshot-2017-12-7 Amazon ECS(1).png

セキュリティーグループ設定

セキュリティーグループも適宜設定します
デフォルトでは新規作成になっています
編集を押したら下記画面になります

Screenshot-2017-12-7 Amazon ECS(2).png

Elastic Load Balancingを設定

EC2構成のときもElastic Load Balancingを利用していたので、今回も設定します

ELBタイプを選択

Application Load Balancer を選択します

Screenshot-2017-12-7 Amazon ECS(5).png

負荷分散用コンテナの設定

ELBへの追加

ELBへの追加 を選択します

Screenshot-2017-12-7 Amazon ECS(5) copy.png

リスナーポートを選択

80:HTTP を選択します

Screen Shot 2017-12-07 at 21.48.24.png

ターゲットグループの項目を設定

Fargate用のターゲットグループを設定します

パスパターンは負荷分散の戦略によると思いますが、今回はFargateを使うため /* にしました

Screenshot-2017-12-7 Amazon ECS(6) copy.png

次のステップへ を選択して次へ進みます

Auto Scalingの設定

Auto Scalingの設定もできるようですが、私には今のところ必要ないので飛ばしました

Screenshot-2017-12-7 Amazon ECS(7).png

確認して作成

サービスの作成 を選択して作成します

Screenshot-2017-12-7 Amazon ECS(8).png

立ち上がるのを待つ

下記のように状況が ACTIVE になるまで待ちます

下のほうのサービスがEC2で動かしていたサービスになります

Screenshot-2017-12-7 Amazon ECS(7) 2.png

以上で作業完了です

感想

終わってみれば案外簡単でした

これからFargateへのせ替えしようと思っている方の参考になれば幸いです