[アップデート] CloudFrontディストリビューションのIPアドレスを固定化できるようになりました

[アップデート] CloudFrontディストリビューションのIPアドレスを固定化できるようになりました

Clock Icon2024.11.24

あしざわです。

Amazon CloudFront が Anycast 静的IP アドレスをサポートしました。

https://aws.amazon.com/jp/about-aws/whats-new/2024/11/amazon-cloudfront-anycast-static-ips/

CloudFront でAnycast 静的IPアドレスを利用すると、従来は難しかった CloudFrontディストリビューションのIPアドレスの固定化 が可能になります。

アップデートの詳細

これまではCloudFront のIP アドレスは https://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips で公開されているIP アドレス範囲のいずれかが使われる仕様になっており、ユーザー独自に固定IP アドレスを指定できませんでした。

CloudFront - ALB の構成でセキュリティグループを利用して、ALBに接続できるIP アドレスをCloudFront のみに制限しようとすると、CloudFront のマネージドプレフィックスリストを利用して通信許可しています。

ただ、許可するIP アドレスを厳密に管理しようとしたりオリジンがオンプレミスなどのAWS 以外の環境だとIP アドレス管理がとても大変だったはずです。IP アドレスを固定できると嬉しいケースもありそうです。

私は固定IP アドレスと聞いて、VPC 上のリソースでよく使われているElastic IP を想像しました。ただ今回の機能はそれとは少し違うようです。

グローバルに分散した600以上のPoint of Presence (PoP) からデータを配信するCDN サービスの特性から、CloudFront の固定IP アドレスはAnycastというネットワークアドレス/ルーティング方式をとっています。

anycast_unicast_cdn.png

Anycast とは、クライアントに着信したリクエストを複数のサーバーまたはネットワークノードに転送するネットワーク技術です。対となる Unicast では、クライアントがリクエストを転送するサーバーやネットワークノードは1つです。

・参考

https://www.cloudflare.com/ja-jp/learning/cdn/glossary/anycast-network/

CloudFront のAnycast 静的IPアドレスを使った際の通信の流れを表したものが、こちらの図です。

cloudfront anycast.png

Anycast 静的IP アドレスを使ったCloudFrontは 仮想パーティション と呼ばれる仮想プラットフォームに構造化されています。

各仮想パーティションがそれぞれのAnycast IP アドレスを保持しています。

リクエストが仮想パーティションに到達すると、BGP を使用してリクエストが地理的に最も近いPOP に送信されます。BGPを活用できるルーティングプロセスによってDNSのみのルーティングと比べて、キャパシティ管理がより正確になり最適化されるようです。

アップデート詳細については以上とします。

もっと詳しく知りたい方は、本アップデートに関するAWS公式ブログをご覧ください。

https://aws.amazon.com/jp/blogs/networking-and-content-delivery/zero-rating-and-ip-address-management-made-easy-cloudfronts-new-anycast-static-ips-explained/

利用開始方法

今回はコンソールから有効化方法を確認しますが、実際に作成するところまで検証を行いません。詳細は後述しますが、主な理由はコストです。

始めに、バージニア北部リージョンのService Quotas からAnycast static IP lists per AWS accountの値を引き上げる必要があります。AWSのデフォルト値は0なので、そのままだとサービスを利用開始できません。

CleanShot 2024-11-23 at 23.58.41.png

該当のクオータ引き上げ申請画面には、マネジメントコンソールのStatic IPsタブのリクエストにあるサポートエンジニアリングのリンクから遷移できました。

CleanShot 2024-11-23 at 23.57.27.png

AWS公式ドキュメントによると、サポートへの連絡時にワークロード情報(1秒あたりのリクエストバイト数とリクエスト数)を提供する必要があるようです。やってみないとわからないですが既存の環境がない検証用AWSアカウントだと承認が通らないような気もします。

引き上げが完了したら、CloudFront のマネジメントコンソールのStatic IPsタブから エニーキャスト静的IP リストを作成をクリックします。

CleanShot 2024-11-23 at 20.36.46.png

静的IP リスト名を入力して送信するとIP リストが作成できるようです。

CleanShot 2024-11-23 at 20.38.58.png

ここで利用可能になるIP アドレスの数は21個で、それぞれがリージョン全体に分散されているようです。

また、一度払い出されたIP アドレスは作成したリストの月額料金を払い続けている限り変更されないそうです。一度利用をやめてしまうと、IP アドレスが変わってしまうと思われるため注意しましょう。

IP リストの作成後、CloudFront ディストリビューションへの関連付けを行います。

cloudfront-anycast-blog-pic.png

関連付けの前提として以下を実施しておく必要があります。

  • IPv6 をオフにする
  • 価格クラスを「すべてのエッジロケーションを利用する」にする

利用にあたっての注意事項

この機能の利用するにあたっての注意事項は、IPリスト作成時のコンソールに記載されているサービス規約にあります。

  • Anycast 静的IP アドレスの月額料金については、Pricingをご確認ください(日本語訳)
  • 毎月自動更新されます。月の 1 日までにオプトアウトしてください
  • 割り当てられた静的IP は、キャンセルから7日後に解放されます

Pricing ページによると、Anycast 静的IP アドレスの料金は 月額 3,000USDです。
※執筆時点では日本語版のPricing ページには記載がなかったため、英語版で確認してください

毎月自動更新という記載から月額の3,000USD は1時間単位の従量課金で分割されない固定の利用料金であると思われます。

検証用途でも高額な課金が発生するリスクがあるため、有効化するところまでの検証は断念しました。

また、開始方法の手順内でも紹介しましたが、既存ワークロードのリクエスト情報をもとにしたサポートチームのレビュープロセスがあるため、検証用のアカウントだと申請が通らない可能性もあります。検証用アカウントで試される方はご注意ください。

まとめ

本ブログでは、直近のアップデートで発表されたCloudFront の Anycast 静的IP アドレスのサポートについて紹介しました。

CloudFront で静的IP アドレスを利用することによって、CloudFrontのIP アドレスを固定化させてFWやセキュリティグループを定義できるため、従来煩雑だったIPアドレス管理が効率化できます。

その他、アップデート内容からはそこまで詳しく読み取れませんでしたが、モバイル回線などを使ったCloudFront を経由するデータ通信料金を無料化させる「ゼロレーティング」も可能になるそうです。

サービスの特性上、コスト面とワークロードの不在という2点の理由から検証用アカウントで試すことは難しそうだったので、またいつか業務で利用する機会があれば試してみたいです。

以上です。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.