ふりぶろぐ
Web Engineer's Blog
AWS

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

今回はECRのイメージをECSにデプロイする方法について解説します。

環境
  • AWS
    • ECR
    • ECS
    • Fargate

前回はECRにPUSHするところまで設定しました。

今回はこのECRのイメージをECSにデプロイしてみます。

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

Fargateを使って最低限の設定で動作させます。

ECSの設定

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

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

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

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

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

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

クラスターの作成

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

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

クラスターの作成

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

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

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

タスクの定義

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

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

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

起動タイプの互換性

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

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

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

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

コンテナ名とイメージ

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

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

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

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

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

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

サービスの作成

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

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

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

サービスの設定

ネットワーク構成には最初から作られているVPCを使いました。
新しく作る場合はサブネットにIGWあれば良いのかな?

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

ネットワーク構成

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

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

必要なタスク

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

実行中のタスク

動作確認

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

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

タスクの選択

そしてこのパブリックIPにアクセスしてみましょう。
ポートマッピングに8080を指定した場合はパブリックIP:8080になります。

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

あとがき

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

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

ABOUT ME
りーふ
たまにブログを書いてるWebエンジニア。 サーバーサイドメインでインフラとフロントエンドもたまにやります。 Javaが得意。 Play Frameworkが好き。 本業は迷惑をかけない程度に手を抜くスタイル。 意識高い系は苦手。