CloudFormationを使用したWeb3層構成のWordPress環境を作成してみた!【ALB編:ApplicarionLoadBalancer,TargetGroup,Listener】

AWS

はじめに

今回は、前回に引き続きCloudFormationを使用してWeb3層構成のWordPress環境を作成していきます。
この記事では、Application Load Balancer (ALB)、Target Group (TG)、Listener、およびSecurity Group (SG)の作成に焦点を当てます。以降の回でも、それらを組み合わせてWordPress環境を構築を進めていきます。

例によって、CloudFormationとは何かについて簡単に説明します。CloudFormationは、AWSリソースのプロビジョニングと管理を自動化するためのサービスです。
テキストベースのテンプレートを使用して、ネットワーク、データベース、アプリケーションサービスなどのAWSリソーススタックをモデル化し、それらを一貫した方法でプロビジョニングと管理できます。

構成図

関連記事

CloudFormationで構築

今回作成するWordPress環境は、以下の通りです。
ですが、後述の通り、Parametersで代入されている値は、任意入力可能です。

  • Application Load Balancer:公開サブネットに配置されるALB。上記のセキュリティグループが関連付けられています。
  • Target Group:インスタンスタイプのターゲットグループ。HTTPプロトコルとポート80を使用します。
  • Listener:ALBのリスナー。HTTPプロトコルとポート80を使用し、デフォルトアクションは上記のターゲットグループに転送することです。

CloudFormationテンプレートは以下にございます。
ダウンロードしてデスクトップなど任意のフォルダに保存します。
※その他のファイルも後述の手順で使用するためダウンロードしておきます

GitHub - kosments/wp-project
Contribute to kosments/wp-project development by creating an account on GitHub.

CloudFormation:YAMLテンプレートのポイント

YAMLテンプレートのポイントを記述します。

  • ApplicationLoadBalancer: Elastic Load BalancingのApplication Load Balancer (ALB)を作成します。ALBは、複数のターゲット(EC2インスタンス、IPアドレス、Lambda関数など)に対して着信トラフィックを自動的に分散します.
  • HttpListener: ALBにHTTPリスナーを追加します。リスナーは、ロードバランサーが接続要求をチェックするためのプロセスで、特定のポートとプロトコル(この場合はポート80とHTTP)をリッスンします.
  • HttpTargetGroup: ターゲットグループを作成します。ターゲットグループは、同じ種類のターゲット(例えば、同じポートとプロトコルを使用するターゲット)をルーティングするための方法です.
Resources:
  # ------------------------------ #
  # ApplicationLoadBalancer
  # ------------------------------ #
  ApplicationLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: !Join ['-', [!Ref Env, !Ref ResourceName, 'alb']]
      Subnets:
        - !ImportValue WpPublicSubnet1a
        - !ImportValue WpPublicSubnet1c
      SecurityGroups:
        - !ImportValue WpAlbSecurityGroup
      Tags:
        - Key: Name
          Value: !Join ['-', [!Ref Env, !Ref ResourceName, 'alb']]
  HttpListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref ApplicationLoadBalancer
      Port: 80
      Protocol: HTTP
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref HttpTargetGroup
  # ------------------------------ #
  # TargetGroup
  # ------------------------------ #
  HttpTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: !Join ['-', [!Ref Env, !Ref ResourceName, 'tg']]
      VpcId: !ImportValue WpVpc
      Port: 80
      Protocol: HTTP
      TargetType: instance
      Targets: 
        - Id: !ImportValue WpEc2Instance
          Port: 80
      Tags:
        - Key: Name
          Value: !Join ['-', [!Ref Env, !Ref ResourceName, 'tg']]

このテンプレートはパラメータ化されており、環境(開発、ステージング、本番)、リソース名を指定できます。これにより、同じテンプレートを異なる環境やプロジェクトで再利用することが容易になります。

スタックの作成

早速、CloudFormationを使用してリソースを作成していきます。
手順は、以下の通りで、リンクにも詳細がございます。

  1. CloudFormation画面を開きスタックの作成>新しいソースを使用(標準)を選択
  2. テンプレートの準備完了>テンプレートファイルのアップロードを選択して、保存したymlを選択
  3. スタックに任意の名称を入力して、パラメータは環境に合わせて変更>次へを選択。※後述の手順に従う場合、デフォルト値でOK
  4. スタックオプションは特に変更せず、次へを選択
  5. レビュー画面を確認して送信を選択

スタックが以下の通り作成されました。
また、リソースタブから各リソースのコンソールにアクセスでき、実際に作成されていることが確認できました。

まとめ

今回は、基本的なネットワーク環境の構築を進めました。
実際のアプリケーション環境(WordPress)を構築するためには、追加のリソースとして、EC2インスタンスやRDSデータベースなどが必要となります。
これらの構築は、次回以降に進めていきます!
最後までご覧いただきありがとうございました。

コメント

タイトルとURLをコピーしました