ECSとは
docker imageを使ってコンテナを起動する、AWSのサービスの一つ
よく、fargateとECSという区別のされ方がされているが、正しくはECSというサービスがあり、そのサービスを起動するコンテナの種類にEC2とfargateという2種類がある。
また、EC2ではWindowsかLinuxを選択することができる。
動的ポートマッピングができない
Fargate起動イメージ
ネットワークのみを使用する
設定項目は
・クラスター
・VPC (オプション)
・サブネット (オプション)
EC2起動イメージ
・EC2 WindowsまたはEC2 Linux
・ネットワーク
を使用する
設定項目は
・クラスター
・VPC
・サブネット
・Linux AMIまたはWindows AMIを持つAuto Scalingグループ
だいたいの手順
- ローカルでdocker imageを作成
- そのイメージをrunしてローカルで動作確認
- AWSコンソールにてECRのレポジトリ作成
- docker imageの名前を先ほど作成したレポジトリ名に変更
- docker imageをプッシュ
- クラスタの作成(ここでタスクをサービスの作成を同時に行う)
はまったところなど
Fargateについて
・ECSの管理コンソール上で「クラスターの作成」(青いボタン)と「今すぐ始める」(グレーのボタン)があるが、「クラスターの作成」から始めるとVPCの設定でつまづく(VPCからネットワークに接続できるかどうかを確認する必要があるので面倒、初心者は「今すぐ始める」からやったほうがいい)
「今すぐ始める」からやれば設定項目めちゃくちゃ少ないので楽に管理できます。
EC2 Linuxについて
$ ecs-cli compose service up
・EC2インスタンスをわざわざ設定しないといけないので面倒
・docker-composeを使用する際に、buildで作成して実行のようなことができないので使用するイメージをbuildでできないのでdockerhub等にアップロードしてimageで指定する必要あり
・docker-composeを使用する際にlink, depends_onが使えない
まとめ
めちゃくちゃ便利なサービスなのに情報が少なくてもったいないなと思いました。
使用した感じですが、docker imageを使ったサービス管理がしたいならfargate、スケーリングやインスタンスの細かい設定など、設定項目をたくさんやりたいならEC2を使うのが良いかなと思います。
fargateを使う際はグレーのボタンからクラスタ作成するのが良いと思います。
細かいところなどはまた別記事に書きたいと思います。