blog top

CloudFrontでEC2にドメインをつける (VPCオリジン)

これは 日本CTO協会24卒 Advent Calendar 2024 の8日目の記事です!

CloudFrontは、よくS3をオリジンとして使われるイメージがあります。

先月、VPC内のリソースをオリジンとして使う機能が登場したので、それを使ってEC2にドメインをつけていきたいと思います。

※Route 53に自身のドメインを登録するホストゾーンが作成されていることを前提とします。

EC2の設定

今回は簡単のため、パブリックサブネットにEC2を作成します。イメージはAmazon Linux 2023を使います。

よりセキュアにする場合は、

という手順を踏んでください(NATゲートウェイは課金されます)。

Amazon Linux 2023

このとき、事前にAmazonSSMManagedInstanceCoreを含むIAMプロファイルを作成しておきEC2に設定すると、セッションマネージャーからEC2に接続できるので便利です。

AmazonSSMManagedInstanceCore

次に、セッションマネージャー(もしくはSSH)でEC2に接続し、Nginxをインストールします。

sudo dnf install nginx
sudo systemctl enable nginx --now

これでEC2側の準備は完了です。

CloudFrontの設定

まずはVPCオリジンの作成をします。

上で作成したEC2のARNをオリジン ARNに設定します。

Nginxは80番で立ち上がるため、プロトコルはHTTP のみに設定します。

VPCオリジンの作成

VPCオリジンのデプロイには数分かかります。デプロイが完了したら、次はディストリビューションの作成です。

Origin Domainには先程作成したVPCオリジンを選択し、VPC origin domainにはEC2のプライベート IP DNS名を入力します。

ディストリビューションの作成

その他の設定はデフォルトのまま進みます。WAFは無効で構いません。

最後に付与したいドメインを設定し、ディストリビューションを作成します。

代替ドメイン名の設定

Route 53の設定

自身のドメインを管理しているホストゾーンにて、先ほど作成したCloudFrontのディストリビューションとドメインを紐付けます。

Route 53の設定

セキュリティグループの設定

実は、VPCオリジンを作成すると、CloudFrontが用いるセキュリティグループが自動で作成されます。

VPCオリジンのセキュリティグループ

EC2のセキュリティグループを編集し、CloudFrontのセキュリティグループからHTTP(80)の通信を許可するように設定します。

EC2のセキュリティグループ編集

これですべての設定が完了です。

HTTPSでアクセスする

最後に、設定したドメインにHTTPSでアクセスできるか確認します。

HTTPSで画面にアクセス

画像のように、Welcome to nginx!と表示されれば成功です。

まとめ

今回の設定のメリットは

などがあります。個人で作成したアプリケーションを簡単にデプロイするにはぴったりですね!

今回は扱いませんでしたが、VPCオリジンにはALBも指定できます。

プロダクション環境で使う場合は、可用性を高めるため、ALBとの併用も検討してみてください。