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