タスク定義とサービス作成

Fargate 用のタスク定義とサービスを作成していきます。基本的には EC2 でコンテナを実行する場合と同様の設定となります。

Fargate 用タスク定義の設定

マネージドコンソールで ECS を開きます。

Dockerイメージの URI は ECR コンソールから確認ができます。

Fargate ではタスク定義を taskdef.json といったファイルにてコードベースの記述もできます。
Cloud9 上で aws ecs register-task-definition --generate-cli-skeleton を実行するとサンプルの確認ができます。

Fargate のデプロイをより簡単に行う方法についてはこちらのスライドを御参照下さい。 第1回 AWS Fargate かんたんデプロイ選手権


Fargate 用サービスの設定

default の Security Group が選択されているか再確認して下さい。ALB からのヘルスチェックが通らずにエラーになります。

評価順を 1 にしたことで、Fargate用の TagetGroup に Path pattern ‘/’ 宛のトラフィックが流れるようになります。

「サービスの検出の統合」とは何でしょうか?その答えは次のページに載ってあります。 https://aws.amazon.com/jp/blogs/news/amazon-ecs-service-discovery/
この機能は、マイクロサービスにおけるコンテナ間の通信で DNS を用いる場合に効果を発揮します。

今回は設定しませんが、Auto Scaling を設定することで、サービスにおけるタスクの数を動的に変更することができます。
たとえば、cpu 使用率が 80% を 3 分間超えていたらコンテナを追加するといった設定が可能です。これによりコストの最適化も図れます。

EC2 上でコンテナアプリケーションを動作させる場合と殆ど同じ作業でサーバーレスにコンテナを実行することができました。
最後に、アプリケーションの動作確認を行います。