【Fargate】ECRのイメージをECSにデプロイする!

今回はこのような質問をいただきました。

ECSにデプロイしたい!
前回、ECRにイメージをPUSHしたのでECSにデプロイしてみます。

とりあえず手動でデプロイしてみてECSで動作確認まで行います。
今回はFargateを使って最低限の設定で動作させます!
- AWS
- ECR
- ECS
- Fargate
ECSの設定
前回の記事の内容でECRの準備はできているのでECSの設定だけしていきます。
特に言及していない設定項目に関してはデフォルトのままで問題ありません。
大きく分けて以下の3つの設定を行います。
- クラスターの作成
- タスクの定義
- サービスの作成
クラスターの作成
まずはクラスターを用意しましょう。
ECSのクラスター→クラスターの作成と進みましょう。

ネットワーキングのみを選択して次のステップへと進み、クラスター名を入力して作成しましょう。


クラスターはこれだけです。
タスクの定義
次にタスクの定義を行います。
タスク定義→新しいタスク定義の作成へと進みます。

起動タイプの互換性はFargateを選択します。

タスク定義名とタスクサイズを設定します。


コンテナの定義→コンテナの追加へと進みます。

コンテナ名とイメージを入力します。

イメージのURLやタグはECRから確認できます。
SpringBootの場合はポートマッピングに8080を指定します。

環境変数の設定が必要な場合は環境の項目から設定しておきます。
あとはコンテナを追加してタスクを作成します。
サービスの作成
最後にサービスを作成します。
クラスター一覧から先ほど作成したクラスターを選択し、サービスの作成へと進みます。


起動タイプはFargateを選択してサービス名とタスク数を入力します。
タスク定義とクラスターは先ほど作成したものが選択されているはずです。

ネットワーク構成には最初から作られているVPCを使いました。
新しく作る場合はサブネットにIGWあれば良いのかな?
ポートマッピングに8080を指定した場合は、セキュリティグループの編集から8080ポートへのアクセスを許可しておきましょう。

あとはデフォルトのままサービスを作成します。
すると新しいサービスが作成され、必要なタスクが設定した数値になっていると思います。

しばらくすると実行中のタスクが必要なタスクと同じ数値になります。

動作確認
ここまでできたら動作確認してみましょう。
タスクタブからタスクを選択して、ネットワークのパブリックIPを確認します。


そしてこのパブリックIPにアクセスしてみましょう!
ポートマッピングに8080を指定した場合はパブリックIP:8080になります。
正常に表示できれば完了です。
あとがき
意外にもECRのイメージをECSで動かすための最小構成を構築する記事が見つからなかったので探り探りやってみました。
今回は手動でのデプロイでしたが、次はソースコードに変更があったときに自動デプロイされるように設定してみたいと思います!