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へのせ替えしようと思っている方の参考になれば幸いです