こんにちは、ふくちです。
当記事は、re:Invent近辺のAWSアップデートを試してみる! Advent Calendar 2024の1日目記事となっております!
アップデート概要
2024年11月21日、Amazon CloudFrontがVPCオリジンに対応したのと発表がありました!
これによって、CloudFront経由でのみアクセスできるプライベートサブネット内に、ALB, NLB, EC2を配置できるようになりました!
これによるメリットは、大きく2つあると考えています。
- コスト削減
→ALBやEC2がパブリックIPを持つ必要がなくなるので、お財布に優しくなります - セキュリティ
→パブリックIPを持たないので、よりセキュアな環境を保つことができる
これからのスタンダードな構成になりそうな機能なので、しっかり触っておくことにしました!
やってみた
以下の新規ドキュメントを参考に、作業を進めます。
前提条件
VPC, ALB, EC2を作成し、アクティブステータスにしておきます。
また、注意点としては、
- マルチアカウントには非対応(2024/12/01時点)なので、VPCとCloudFrontは同じリージョンに作成する必要がある
- インターネットゲートウェイが必要(サブネットへのルーティングには使用しないが、VPCがインターネットからのトラフィックを受信するために必要)
- プライベートサブネットにはIPv4アドレスが必要
- VPCプライベートオリジンのセキュリティグループにおいて、CloudFrontマネージドプレフィックスリストを明示的に許可
→どうやら、ALBのセキュリティグループにはCloudFrontが作成するPrivate Origin用のENIを設定すれば良いみたいです!
などが挙げられます。
インターネットゲートウェイなんかは、知っておかないと躓いてしまいそうなポイントなので要注意ですね。
VPC作成
VPC内にはプライベートサブネットのみ作成し、インターネットゲートウェイもアタッチだけしてみました。
EC2作成
ApatcheだけインストールしたEC2へアクセスします。CloudFront経由で下記にアクセスできたら成功です。
ALB作成
CloudFrontの設定
作成へと進み、オリジンARNには先ほど作成したALBを指定。
オリジン選択のところで、先程作成したVPCオリジンを選択しましょう!
※ALBを選択しないように注意!(一敗)
そして払い出されたディストリビューションドメイン名にアクセスします。
ALBのリソースマップを確認するとリクエストがタイムアウトしているとのこと。
これは私が完全に勘違いしていたことなのですが、先ほど作成したセキュリティグループ(CloudFrontのプレフィックスリストを明示的に追加したもの)をEC2にアタッチしてしまっていたんですよね。。。
ALBからのアクセスを受け付ける必要があるのだから、それ用にセキュリティグループを変更してあげました。
※VPCオリジンにEC2を選択した場合の注意点
ディストリビューション作成時や、ディストリビューションに追加でオリジンを設定する場合、VPC origin domainのところに、EC2のプライベートIP DNS名を手動でコピペする必要があります。
↓
ALBは自動で出てくれるのですが、EC2だけ「なに設定すればいいんだっけ?」とならないように注意が必要です。
試しに、パブリックサブネットにあるALBに対してもVPCオリジンが設定できるのか試してみました。
↓
↓
デプロイ出来ましたね…
これ、普通にALBをオリジンとするのとはなにか違うんでしょうかね…ちょっとそこまでは調べきれませんでした。
また時間があれば調べてみようと思います!
まとめ
VPCオリジン自体は簡単に作成できました!
ただ、それ以外の部分(EC2やらALBやら)で躓いてしまうことが多かったので、もっと環境触らないといけないなとなりました…
皆さんも是非試してみてください!