インフラ

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

ecr-ecs-deploy-fargate
野田竣介

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

ECSにデプロイしたい!

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

あわせて読みたい
SpringBootをCodeBuildでビルドしてECRにPUSHする!
SpringBootをCodeBuildでビルドしてECRにPUSHする!

とりあえず手動でデプロイしてみてECSで動作確認まで行います。

今回はFargateを使って最低限の設定で動作させます!

環境
  • AWS
    • ECR
    • ECS
      • Fargate

ECSの設定

前回の記事の内容でECRの準備はできているのでECSの設定だけしていきます。

特に言及していない設定項目に関してはデフォルトのままで問題ありません。

大きく分けて以下の3つの設定を行います。

  • クラスターの作成
  • タスクの定義
  • サービスの作成

それぞれの概要を超ざっくり解説するとこんな感じです。

  • クラスター:インスタンスの集合体
  • タスク定義:docker-compose.yml
  • サービス:Dockerコンテナ管理

クラスターの作成

まずはクラスターを用意しましょう。

ECSのクラスター→クラスターの作成と進みましょう。

クラスターの作成

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

ネットワーキングのみを選択
クラスター名の入力

クラスターはこれだけです。

タスクの定義

次にタスクの定義を行います。

タスク定義→新しいタスク定義の作成へと進みます。

新しいタスク定義の作成

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

起動タイプの互換性

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

タスク定義名の設定
タスクサイズの設定

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

コンテナの追加

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

コンテナ名とイメージ

イメージのURLやタグはECRから確認できます。

使用するイメージが動作することをローカルで確認しておいてください。

SpringBootの場合はポートマッピングに8080を指定します。

ポートマッピング

環境変数の設定が必要な場合は環境の項目から設定しておきます。

あとはコンテナを追加してタスクを作成します。

コンテナの定義で設定するイメージを切り替えることで新しいバージョンのデプロイが可能です。

サービスの作成

最後にサービスを作成します。

クラスター一覧から先ほど作成したクラスターを選択し、サービスの作成へと進みます。

作成したクラスターを選択
サービスの作成

起動タイプはFargateを選択してサービス名とタスク数を入力します。

タスク定義とクラスターは先ほど作成したものが選択されているはずです。

サービスの設定

ネットワーク構成には最初から作られているVPCを使いました。

新しく作る場合はサブネットにIGWあれば良いのかな?

ポートマッピングに8080を指定した場合は、セキュリティグループの編集から8080ポートへのアクセスを許可しておきましょう。

ネットワーク構成

あとはデフォルトのままサービスを作成します。

すると新しいサービスが作成され、必要なタスクが設定した数値になっていると思います。

必要なタスク

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

実行中のタスク

動作確認

ここまでできたら動作確認してみましょう。

タスクタブからタスクを選択して、ネットワークのパブリックIPを確認します。

タスクの選択
パブリックIP

そしてこのパブリックIPにアクセスしてみましょう!

ポートマッピングに8080を指定した場合はパブリックIP:8080になります。

正常に表示できれば完了です。

あとがき

意外にもECRのイメージをECSで動かすための最小構成を構築する記事が見つからなかったので探り探りやってみました。

今回は手動でのデプロイでしたが、次はソースコードに変更があったときに自動デプロイされるように設定してみたいと思います!

記事URLをコピーしました