CloudFrontでEC2にドメインをつける (VPCオリジン)
これは 日本CTO協会24卒 Advent Calendar 2024 の8日目の記事です!
CloudFrontは、よくS3をオリジンとして使われるイメージがあります。
先月、VPC内のリソースをオリジンとして使う機能が登場したので、それを使ってEC2にドメインをつけていきたいと思います。
※Route 53に自身のドメインを登録するホストゾーンが作成されていることを前提とします。
EC2の設定
今回は簡単のため、パブリックサブネットにEC2を作成します。イメージはAmazon Linux 2023
を使います。
よりセキュアにする場合は、
- プライベートサブネットにEC2を作成
- パブリックサブネットにNATゲートウェイを作成
という手順を踏んでください(NATゲートウェイは課金されます)。
このとき、事前にAmazonSSMManagedInstanceCore
を含むIAMプロファイルを作成しておきEC2に設定すると、セッションマネージャーからEC2に接続できるので便利です。
次に、セッションマネージャー(もしくはSSH)でEC2に接続し、Nginx
をインストールします。
sudo dnf install nginx
sudo systemctl enable nginx --now
これでEC2側の準備は完了です。
CloudFrontの設定
まずはVPCオリジンの作成をします。
上で作成したEC2のARNをオリジン ARN
に設定します。
Nginxは80番で立ち上がるため、プロトコルはHTTP のみ
に設定します。
VPCオリジンのデプロイには数分かかります。デプロイが完了したら、次はディストリビューションの作成です。
Origin Domain
には先程作成したVPCオリジンを選択し、VPC origin domain
にはEC2のプライベート IP DNS名
を入力します。
その他の設定はデフォルトのまま進みます。WAFは無効で構いません。
最後に付与したいドメインを設定し、ディストリビューションを作成します。
Route 53の設定
自身のドメインを管理しているホストゾーンにて、先ほど作成したCloudFrontのディストリビューションとドメインを紐付けます。
セキュリティグループの設定
実は、VPCオリジンを作成すると、CloudFrontが用いるセキュリティグループが自動で作成されます。
EC2のセキュリティグループを編集し、CloudFrontのセキュリティグループからHTTP(80)の通信を許可するように設定します。
これですべての設定が完了です。
HTTPSでアクセスする
最後に、設定したドメインにHTTPSでアクセスできるか確認します。
画像のように、Welcome to nginx!
と表示されれば成功です。
まとめ
今回の設定のメリットは
- プライベートIPを指定しているので、EC2の停止後もIPが変わらない
- パブリックIPの場合はEIPなどで固定する必要がある
- ALBの料金がかからない
などがあります。個人で作成したアプリケーションを簡単にデプロイするにはぴったりですね!
今回は扱いませんでしたが、VPCオリジンにはALBも指定できます。
プロダクション環境で使う場合は、可用性を高めるため、ALBとの併用も検討してみてください。