CloudFront の AWS managed prefix list の重みが 55 であることの注意点

記事タイトルとURLをコピーする

営業部 佐竹です。
本日は、最近リリースされた機能である「CloudFront の AWS managed prefix list」利用時における Security Group に関する運用上の注意点を記載します。

はじめに

以下のブログ記事でも取り上げさせていただいた通り、先日 CloudFront のための AWS managed prefix list の提供が開始されました。

blog.serverworks.co.jp

AWS managed prefix list は今まで Gateway 型の VPC エンドポイントに対してのみ提供されており、対象は S3 と DynamoDB のみでした。

そこに3つ目として追加されたのが CloudFront の AWS managed prefix list です。

AWS managed prefix list の一覧

現在存在する AWS managed prefix list は以下の3つです。

Prefix list name AWS service
com.amazonaws.region.s3 Amazon S3
com.amazonaws.region.dynamodb DynamoDB
com.amazonaws.global.cloudfront.origin-facing Amazon CloudFront

東京リージョンにおける AWS managed prefix list の一覧

東京リージョンでは、以下の通りになります。上記のリストの regionap-northeast-1 に置き換わります。

Prefix list ID Prefix list name AWS service
pl-61a54008 com.amazonaws.ap-northeast-1.s3 Amazon S3
pl-78a54011 com.amazonaws.ap-northeast-1.dynamodb DynamoDB
pl-58a04531 com.amazonaws.global.cloudfront.origin-facing Amazon CloudFront

また、AWS managed prefix list には上記テーブル左端に記載した「Prefix list ID」が事前に割り当てられており、Security Group に設定する場合にはこのリスト ID を記載します。なお、リスト IDはリージョンごとに異なる点に注意が必要です。

f:id:swx-satake:20220214115548p:plain
Prefix list ID はリージョンごとに異なる

Security Group 設定時の注意点

ここから注意点を記載します。

今回のリリースを受け、以下のドキュメントページが新設されました。

docs.aws.amazon.com

現在は、英語のみで閲覧できます。

f:id:swx-satake:20220214120122p:plain
ドキュメント左端のリストのリンクも英語でのみ表示されます

「Work with AWS-managed prefix lists」のページには、「AWS-managed prefix list weight」という項目が用意されています。抜粋しますと、以下の通りです。

AWS-managed prefix list weight

Prefix list name AWS service Weight
com.amazonaws.region.s3 Amazon S3 1
com.amazonaws.region.dynamodb DynamoDB 1
com.amazonaws.global.cloudfront.origin-facing Amazon CloudFront 55

ここで注意が必要なのは、CloudFront の AWS managed prefix list は重みが 55 となっている点です。

CloudFront の AWS managed prefix list の重みは 55

つまり、CloudFront の AWS managed prefix list を Security Group へ記載すると、Security Group に記載が可能なルール数のうち55個分をまとめて消費するということです。

Security Group にあまり明るくない方向けに、詳細に説明します。

blog.serverworks.co.jp

上記ブログにまとめた通りではあるのですが、Security Group では現在以下の初期制限があります。

  • セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 60
  • ネットワークインターフェイス当たりのセキュリティグループ: 5

基本的には、作成したばかりの AWS アカウントでは、セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数は「60」になっています。これはつまり、CloudFront の AWS managed prefix list を使った場合に、60 のうち 55 を消費する=問題なく使えるということになります。

ただ、かなり昔の話になりますが、古い AWS アカウントでは セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数 が「50」でした。この場合は、CloudFront の AWS managed prefix list を Security Group に設定すること自体が不可能です。

よって、CloudFront の AWS managed prefix list を利用されたい場合は、まず上記の上限に抵触していないか確認をされたほうが良いでしょう。

Security Group の設定ルール数制限の確認方法

f:id:swx-satake:20220214122152p:plain

EC2 のマネジメントコンソールにある「Limits」から確認が可能です。私の個人検証アカウントでは以下の通りです。

  • セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 100
  • ネットワークインターフェイス当たりのセキュリティグループ: 5

1つの Security Group に2つルールを設定したい場合にエラー

Security Group にプロトコル別に AWS managed prefix list を記載したい場合があります。具体的には以下のような設定が想定されます。

f:id:swx-satake:20220214121431p:plain

https と http どちらも許可したい場合は上画像の通りの設定となります。実際に設定してみましょう。

f:id:swx-satake:20220214121522p:plain

The maximum number of rules per security group has been reached. というエラーになります。

これは、55×2=110 のルールを消費するため、セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数 の設定値制限を越えてしまったことによるエラーです。私のアカウントでは 100 に緩和されていますが、それでも不足しています。

これを上限緩和せずに回避する場合、https と http でそれぞれ別の Security Group として作成してアタッチしてください。

どのように Security Group を上限緩和するのが良いか

上限緩和を行うことで上記エラーを回避したいという場合を考えてみます。

CloudFront の AWS managed prefix list の重み「55」を生かすためには、以下の設定がベターなのではと考えられます。

  • セキュリティグループ当たりのインバウンドルールまたはアウトバウンドルールの数: 111
  • ネットワークインターフェイス当たりのセキュリティグループ: 9

このように緩和すれば、1つの Security Group に対して2つの prefix list が記載可能です。加えて、掛け算として 1000 ルールにできるだけ近づけるように「111 × 9 = 999」にしています。

AWS managed prefix list を2つ記載し「55×2=110」のルールを消費しても「111」であれば残り1つルールが追加できるため、Outbound の設定を加えることも可能になります。

まとめ

本日は、最近リリースされた機能である「CloudFront の AWS managed prefix list」利用時における Security Group に関する運用上の注意点を記載しました。

まとめとしては以下の通りです。

  • CloudFront の AWS managed prefix list の重みは「55」であること
  • その重さのため、Security Group ルール数上限である「60」ルールに抵触しやすいこと
  • 1つの Security Group に https/http のプロトコルを同時に設定したい場合は、上限緩和はルール「111」が良いと考えられること

同様の事象に悩まれていた方の参考になれば幸いです。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。