CloudFormationでALBを構築する
ウィスキー、シガー、パイプをこよなく愛する大栗です。
先週発表がされたアプリケーションロードバランサー(ALB)ですが、最初からCloudFormationに対応しています。いつもCloudFormation対応は後になるのですが、ALBはサービスの発表と同時に対応しているので試してみました。
リソースのおさらい
以下のようにリソースの種類が1種類から4種類へ分割されています。
- 標準ロードバランサー(旧ELB:Classic Load Balancer)
- AWS::ElasticLoadBalancing::LoadBalancer
- アプリケーションロードバランサー(ALB:Application Load Balancer)
- AWS::ElasticLoadBalancingV2::Listener
- AWS::ElasticLoadBalancingV2::ListenerRule
- AWS::ElasticLoadBalancingV2::LoadBalancer
- AWS::ElasticLoadBalancingV2::TargetGroup
テンプレート
今回は以下の様なシンプルな環境のテンプレートをサンプルとして作成します。VPC、サブネットは既存のものを使用する前提です。
ちょっと長いですが、以下のテンプレートを作成しました。
内容の解説
パラメータ
パラメータは以下の内容となっています。
パラメータ名 | 内容 | 備考 |
---|---|---|
AMIID | HVMのAmazon LinuxのAMI IDを入力 | 今回は東京リージョンで実行しているのでami-374db956 としました。 |
Env | 任意の内容 | 環境の識別子 |
KeyPair | 任意のKeyPair | |
Subnets | ALBとEC2インスタンスを配置するサブネット | 今回はDefault VPCの2個のサブネットを選択します |
VPCID | 環境を配置するVPC | 今回はDefault VPCのIDを選択します |
リソース
以下の様な構成にしています。デフォルトルールのみであるためAWS::ElasticLoadBalancingV2::ListenerRule
を使用していません。
リソース名 | Type | 内容 |
---|---|---|
ALBSG | AWS::EC2::SecurityGroup | ALB用のセキュリティグループです。80/443番ポートを開けています。 |
AppSG | AWS::EC2::SecurityGroup | EC2用のセキュリティグループです。ALBSGからの80番ポートを開けています。 |
Instance01 | AWS::EC2::Instance | apacheをインストールして/index.html にインスタンスIDを表示します。 |
Instance02 | AWS::EC2::Instance | apacheをインストールして/index.html にインスタンスIDを表示します。 |
ALBTarget | AWS::ElasticLoadBalancingV2::TargetGroup | Instance01 とInstance02 を登録します。 |
ALB | AWS::ElasticLoadBalancingV2::LoadBalancer | ALBを作成します。 |
ALBListener | AWS::ElasticLoadBalancingV2::Listener | HTTPを受け付けて、デフォルトルールでALBTarget へ向けています。 |
出力
出力は確認用のURLとしています。
出力名 | 内容 |
---|---|
CheckURL | アクセスの確認用URL |
動作確認
実際にアクセスして動作確認します。出力の内容のURLへアクセスしてみます。 下図のようにインスタンスIDが表示されます。
さいごに
ALBは最初からCloudFormationに対応しているのでやきもきせずに済みました。CloudFormationを前提とするService Catalogでも使えるということなのでALBの構成管理も可能ですね。