AWS
ECS
Fargate

流行りのECSを使ってみてはまったところとか


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グループ


だいたいの手順


  1. ローカルでdocker imageを作成

  2. そのイメージをrunしてローカルで動作確認

  3. AWSコンソールにてECRのレポジトリ作成

  4. docker imageの名前を先ほど作成したレポジトリ名に変更

  5. docker imageをプッシュ

  6. クラスタの作成(ここでタスクをサービスの作成を同時に行う)


はまったところなど


Fargateについて

・ECSの管理コンソール上で「クラスターの作成」(青いボタン)と「今すぐ始める」(グレーのボタン)があるが、「クラスターの作成」から始めるとVPCの設定でつまづく(VPCからネットワークに接続できるかどうかを確認する必要があるので面倒、初心者は「今すぐ始める」からやったほうがいい)

「今すぐ始める」からやれば設定項目めちゃくちゃ少ないので楽に管理できます。


EC2 Linuxについて


docker-composeでのデプロイコマンド

$ ecs-cli compose service up


・EC2インスタンスをわざわざ設定しないといけないので面倒

・docker-composeを使用する際に、buildで作成して実行のようなことができないので使用するイメージをbuildでできないのでdockerhub等にアップロードしてimageで指定する必要あり

・docker-composeを使用する際にlink, depends_onが使えない


まとめ

めちゃくちゃ便利なサービスなのに情報が少なくてもったいないなと思いました。

使用した感じですが、docker imageを使ったサービス管理がしたいならfargate、スケーリングやインスタンスの細かい設定など、設定項目をたくさんやりたいならEC2を使うのが良いかなと思います。

fargateを使う際はグレーのボタンからクラスタ作成するのが良いと思います。

細かいところなどはまた別記事に書きたいと思います。