AWS Fargate Advent Calendar 2017の15日目です
この記事ではECS+EC2で動いているサービスをECS+Fargateにのせ替えるときにやったことを紹介します
なお、作業にはAWSマネジメントコンソールを使用します
現在の構成について
構成としては下記の通り
現在ECS+EC2で動かしているため、すでにイメージとタスクの登録は完了しています
アプリケーション内で使用するためにRDSとElasticacheと連携しています
タスク編集
まずタスクを編集します
1. Requires compatibilities を変更
FARGATEにチェックを入れます
チェックを入れたら警告が出てきます
警告の内容
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.
タスクで logging と private image を使うんだったらroleを設定しろとのこと
今回のプロジェクトでは private imageを使うので設定します
2. ネットワークモードを変更
awsvpc を選択します
3. Task execution role を変更
ecsTaskExecutionRole を設定しました
4. Task size を設定
5. 保存
保存します
コンテナの内容については今回特に変更がないのでそのままです
Fargate用のサービスを追加
サービスを追加します
1. 作成ボタンを押す
2. サービスの設定をする
項目を入力していきます
- 
Launch TypeにFARGATEを選択します - 
タスク定義は先程作成したものを選択します
 
3. ネットワーク構成
VPCとサブネットは適宜設定します
セキュリティーグループ設定
セキュリティーグループも適宜設定します
デフォルトでは新規作成になっています
編集を押したら下記画面になります
Elastic Load Balancingを設定
EC2構成のときもElastic Load Balancingを利用していたので、今回も設定します
ELBタイプを選択
Application Load Balancer を選択します
負荷分散用コンテナの設定
ELBへの追加
ELBへの追加 を選択します
リスナーポートを選択
80:HTTP を選択します
ターゲットグループの項目を設定
Fargate用のターゲットグループを設定します
パスパターンは負荷分散の戦略によると思いますが、今回はFargateを使うため /* にしました
次のステップへ を選択して次へ進みます
Auto Scalingの設定
Auto Scalingの設定もできるようですが、私には今のところ必要ないので飛ばしました
確認して作成
サービスの作成 を選択して作成します
立ち上がるのを待つ
下記のように状況が ACTIVE になるまで待ちます
下のほうのサービスがEC2で動かしていたサービスになります
以上で作業完了です
感想
終わってみれば案外簡単でした
これからFargateへのせ替えしようと思っている方の参考になれば幸いです













