次に、タスク定義からサービスを作成します。
「タスク定義の表示」から遷移した画面(タスク定義の詳細情報を表示する画面)から、「アクション」、「サービスの作成」と順に選択します。
「サービスの設定」で、以下のように設定します。
起動タイプ:FARGATE
タスク定義:先ほど作成したRailsフロントエンド用のタスク定義(自動で選択されています)
クラスター:このハンズオンで作成したクラスター
サービス名:{ユーザ名}-ecsdemo-frontend
タスクの数:3
「デプロイメント」では以下のように設定します。設定ができたら次のステップに進みます。
デプロイメントタイプ:Blue/Greenデプロイメント(AWS CodeDeployを使用)
CodeDeployのサービスロール:{ユーザー名}CodeDeployRoleForECS
(今回のハンズオンで作成したもの)
「ネットワーク構成」では以下のように設定します。
(上にスクロールする必要があります)
クラスターVPC:ハンズオンで作成したVPC
サブネット:ハンズオンで作成したサブネットを3つ
セキュリティグループ:編集を選択し、以下のように設定します。
割り当てられたセキュリティグループ:既存のセキュリティグループの選択
default
セキュリティグループグループにチェックを入れる
「Load balancing」では以下のように設定します。
ロードバランサーの種類:Application Load Balancer
ロードバランサー名:今回のハンズオンで作成したロードバランサー
ロードバランス用のコンテナ:frontend
コンテナが選択されていることを確認して、「ロードバランサーに追加」を選択
コンテナをロードバランサーに追加した際に表示される部分では、以下のように設定します。
プロダクションリスナーポート:新規作成、80
テストリスナーポート:新規作成、9000
続けて、「Additional configuration」を選択し、以下のように設定します。
ターゲットグループ1の名前:{ユーザー名}-ecsdemo-frontend-1
ヘルスチェックパス:/health
ターゲットグループ2の名前:{ユーザー名}-ecsdemo-frontend-2
ヘルスチェックパス:/health
「サービスの検出(オプション)」では、以下のように設定します(ここは後で直せないので、慎重に設定してください)。
「サービス検出の統合の有効化」にチェック
名前空間名:service
サービスの検出名:{ユーザ名}-ecsdemo-frontend
オートスケーリングの設定はデフォルトのままで次に進み、設定を確認した上で「サービスの作成」を選択してください。
サービス作成が完了し、タスクが3つ立ち上がることを確認します。
ALBのターゲットグループ配下にFargateモードで起動したタスクに割り当てられたENIがアタッチされ、StatusがHealthyになっていることを確認します。
ALBのエンドポイントにアクセスし、Railsフロントエンドのアプリケーションが表示されることを確認します。