[AWS] ALB + EC2でWebサーバを構築するCloudFormationを書いてみた

ALB + EC2構成のHTTPS通信に対応したWebサーバをCloudFormationで構築しました。

EC2インスタンスの構築部分はユーザーデータの記述例も含めたテンプレートなので、初期構築コマンドを書き換えれば用途に応じた環境がセットアップできます。

もしくは構築済みのカスタムAMIやマーケットプレイスのイメージを指定して実行すれば、簡単にWordPressやJenkinsなどを準備することもできますね!

結構シンプルな構成にしたつもりですので、AWS初学者の方も是非活用してみてください。

◆Github (テンプレートはこちら)
https://github.com/noname-work/aws-cloudformation/tree/master/ec2

構築される環境


・80番ポートと443ポートからのアクセスを許可するALB
・ALBからのアクセスのみを許可するEC2インスタンス
・EC2起動時にApacheがインストール&起動されるユーザーデータ
・アクセスを制御するための各セキュリティグループ
・ALBで常にHTTPS通信をサポートするためのリスナールール
が構築されます。


EC2インスタンスは直接アクセスできないように制御しており、ALBからのアクセスとSSHログインのポートのみが許可されています。

ユーザーがWebサーバーへアクセスするためにはALBを経由する必要があります。

なお、テンプレートのデフォルト設定ではSSHアクセスのIP制限をつけていないので、構築する際には自宅のIPアドレスやVPNからのアクセスに制御することをおすすめします。


より安全にするのであればEC2インスタンスはPrivateなサブネットに配置することで、同じVPC内に配置されたリソースからのみ参照ができる状態にできます。

このケースでのインターネット上からWebサーバーへのアクセスは、Publicなサブネットに配置されたALBからアクセスが可能です。

Webサーバ作成時のパラメータ

パラメータ
InstanceType 起動するEC2インスタンスのタイプをリストから選択します。デフォルトはt2.microです。
VPCID ALBとEC2を起動するVPCを選択します。
EC2SubnetID EC2を実行するサブネットを選択します。安全のためPrivateサブネットでの起動をおすすめします。
InstanceImage 起動するEC2インスタンスのAMIを指定します。デフォルトではAmazonLinux2が起動します。
ALBSubnetIDs ALBを実行するためのサブネットを選択します。Webサーバーを公開するためにPublicサブネットの選択をおすすめします。少なくとも2つ選択してください。
ALBCertificateARN HTTPS通信をサポートするためにACMに登録しているSSL証明書のARNを入力してください。

スタック作成後


スタック作成後、ALBのDNSへドメインを割り当ててブラウザからアクセスしてください。
HTTPアクセスがHTTPSへリダイレクトされることと、正常にApacheのトップページが表示されることが確認できれば問題ありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)