Railsフロントエンド用のサービスの作成

次に、タスク定義からサービスを作成します。

作業手順

  1. 「タスク定義の表示」から遷移した画面(タスク定義の詳細情報を表示する画面)から、「アクション」、「サービスの作成」と順に選択します。

    • タスク定義の詳細情報を表示する画面を閉じてしまった場合は、「タスク定義」から作成したタスク定義を選択すると同じ画面に遷移します。
  2. 「サービスの設定」で、以下のように設定します。

    • 起動タイプ:FARGATE

    • タスク定義:先ほど作成したRailsフロントエンド用のタスク定義(自動で選択されています)

    • クラスター:このハンズオンで作成したクラスター

    1. サービス名:{ユーザ名}-ecsdemo-frontend

    2. タスクの数:3

    2

  3. 「デプロイメント」では以下のように設定します。設定ができたら次のステップに進みます。

    • デプロイメントタイプ:Blue/Greenデプロイメント(AWS CodeDeployを使用)

    • CodeDeployのサービスロール:{ユーザー名}CodeDeployRoleForECS(今回のハンズオンで作成したもの)

    3

  4. 「ネットワーク構成」では以下のように設定します。

    • (上にスクロールする必要があります)

    • クラスターVPC:ハンズオンで作成したVPC

    • サブネット:ハンズオンで作成したサブネットを3つ

      • ドロップダウンリストからサブネットを選択すると、選択済みサブネットがその上に追加されていきます。
    • セキュリティグループ:編集を選択し、以下のように設定します。

      • 割り当てられたセキュリティグループ:既存のセキュリティグループの選択

      • defaultセキュリティグループグループにチェックを入れる

    5

    4

  5. 「Load balancing」では以下のように設定します。

    • ロードバランサーの種類:Application Load Balancer

    • ロードバランサー名:今回のハンズオンで作成したロードバランサー

    • ロードバランス用のコンテナ:frontendコンテナが選択されていることを確認して、「ロードバランサーに追加」を選択

    6

  6. コンテナをロードバランサーに追加した際に表示される部分では、以下のように設定します。

    • プロダクションリスナーポート:新規作成、80

    • テストリスナーポート:新規作成、9000

    7

  7. 続けて、「Additional configuration」を選択し、以下のように設定します。

    • ターゲットグループ1の名前:{ユーザー名}-ecsdemo-frontend-1

    • ヘルスチェックパス:/health

    • ターゲットグループ2の名前:{ユーザー名}-ecsdemo-frontend-2

    • ヘルスチェックパス:/health

    8

  8. 「サービスの検出(オプション)」では、以下のように設定します(ここは後で直せないので、慎重に設定してください)。

    • 「サービス検出の統合の有効化」にチェック

    • 名前空間名:service

    • サービスの検出名:{ユーザ名}-ecsdemo-frontend

    9

  9. オートスケーリングの設定はデフォルトのままで次に進み、設定を確認した上で「サービスの作成」を選択してください。

実装の確認

  1. サービス作成が完了し、タスクが3つ立ち上がることを確認します。

    11

  2. ALBのターゲットグループ配下にFargateモードで起動したタスクに割り当てられたENIがアタッチされ、StatusがHealthyになっていることを確認します。

    12

  3. ALBのエンドポイントにアクセスし、Railsフロントエンドのアプリケーションが表示されることを確認します。

    13