[アドカレ2024] Amazon CloudFrontのVPC Originを利用してみた

はじめに

こんにちは、アドベントカレンダー2024で、12/12担当のディーネットの山田です。

タイトルにある通り、2024年11月21日に発表された、Amazon CloudFront の VPC オリジン機能について触ってみたので、構成含めて使って見ました。

Amazon CloudFront が VPC オリジンを発表

Amazon CloudFront VPC オリジンの紹介

Amazon CloudFront の VPC オリジンについて

VPC オリジン機能を利用すると、VPC のプライベートサブネットにホストされているアプリケーションから 直接 CloudFront を経由して配信できる機能です。

インターネットに面するエンドポイントを CloudFront だけにすることができます。

これにより、CloudFront と オリジン間を安全に接続するための運用オーバーヘッドを削減することができます。

また、ここ最近のアップデートとして、Elastic Load Balancing を利用すると パブリック IP アドレスの利用料金が発生していたので、プライベートサブネットに CloudFront をアタッチすることで、そういった費用の発生も抑えられるので、ありがたいポイントですね。

料金

Amazon CloudFront には、従来通りリクエストや転送量に応じた利用料金が発生します。

しかし、VPC オリジンを利用したからといって従来通りの利用料金以外は発生しません。(オプションのために追加費用なしで利用できる)

構成図

一般的な階層構造アーキテクチャです。

今までであれば、ELB がパブリックサブネットに登場することが多かったですが、以下の構成では NAT Gateway のみになっています。

実際に設定していきます

CloudFront を利用した構成がすでに作成されている前提での話になります。

VPC オリジンを作成

CloudFront の画面で、VPC オリジンを作成します。

(CloudFront で従来から作成していた、オリジンの画面と似てますね)

オリジンのセキュリティグループで CloudFront からのアクセスを許可

CloudFront からオリジンに対してアクセスができるようにセキュリティグループで許可します。

CloudFront 用のプレフィックスリスト(com.amazonaws.global.cloudfront.origin-facing)が準備されているでこれを利用します。

(サービスクォーターの関係から、anywhereとしていますが、可能な限りルールは最小限としてください)

CloudFront のオリジンに VPC オリジンを追加

CloudFront のオリジンに 先ほど作成した VPC オリジンを追加します。

CloudFront のビヘイビアを変更

パブリック経由のオリジンを VPC オリジンに変更します。

動作確認

設定変更(ここまで来ると構成変更になると思いますが)を実施した後は、従来通り動作することを確認します。

Elastic Load Balancing でアクセスログを取得してリクエスト処理を確認

Elastic Load Balancing でアクセスログを取得しているのであれば、CloudFront 経由でリクエストを行い、以下のように internal の ELB でアクセスログが記録されていることを確認します。

https 2024-12-02T06:49:50.806954Z app/wordXXXXXXXXXXXXXXXX-internal/XXXXXXXXXXXXXXXX 54.239.214.179:33288 172.30.XX.XX:80 0.000 0.052 0.000 200 200 1031 30040 "GET https://XXXXXXXXXXXXXXXXXXXXXXXXXdb-force.net:443/ HTTP/1.1" "Mozilla/5.0 (Linux; Android 6.0; Nexus 7 Build/KRT16M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.6778.69 Safari/537.36 DatadogSynthetics" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 arn:aws:elasticloadbalancing:XXXXXXXXXXXXXX:XXXXXXXXXXXXXX:targetgroup/wordXXXXXXXXXXXX-internal-tg/XXXXXXXXXXXXXXXX "Root=1-674d588e-4f3c1af32b938b3559430dce" "XXXXXXXXXXXXXXXXXXXXXXXXXdb-force.net" "arn:aws:acm:XXXXXXXXXXXXXX:XXXXXXXXXXXX:certificate/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 0 2024-12-02T06:49:50.734000Z "forward" "-" "-" "172.30.XX.XX:80" "200" "-" "-" TID_db4131d97285784daaeaXXXXXXXXXXXX

注意点

VPC にアクセスできるようになったとは言え、色々と制限があるみたいなので、パブリック経由だった CloudFront のアクセスを VPC オリジンに切り替える際は、以下の点に注意が必要してください。

  1. VPC は、CloudFront ディストリビューションと同じ AWS アカウントに存在する必要があること
  2. VPC オリジンをサポートしている AWS リージョンであること
  3. プライベートサブネットに少なくとも1つの利用可能な IPv4 アドレスが存在すること
  4. ゲートウェイロードバランサーはサポートされないこと
  5. オリジンの書き換えはサポートされないこと
  6. レスポンスタイムアウトやキープアライブタイムアウトは、デフォルト値で固定されること

Restrict access with VPC origins

返信を残す

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

CAPTCHA