🫥

ALBのSecurityGroupにCloudFront用のManagedPrefixListを複数設定して上限にひっかかっちゃった話

2023/03/16に公開

上限に関するエラーメッセージが発生

こんにちわ!

DevelopersIO BASECAMP参加者の加藤です!

先ほどいつものようにCloudFormationでスタック作成に臨んだ所、

以下のようなエラ-メッセージに遭遇しました。

エラーメッセージ
The maximum number of rules per security group has been reached.


記事を書き終えた今振り返ると「そりゃそうです」な私の謎のミスが原因なのですが、せっかくなので備忘録として記事にする事にしました。

先に結論から

  • セキュリティグループのIngressルールの上限はデフォルトで60になっている。(2023年3月16日時点)
  • CloudFront用のManagedPrefixListのエントリ数は確認してみた所45だった(同上)
  • 今回のエラーは当該PrefixListを異なるIngressルールにひとつずつ=2つ設定した事で起きた(私の理解不足から発生したが通常は起きえない)

という事で、以降詳細になります。

どうしてこうなった

まずエラー発生の経緯です。

この時、作成していたリソースの中にFargateのBlue/Green Deployを行うCodeDeployが存在した為、ALBにGreen用の8080番のリスナーを追加作成しました。

そして、関連リソースのどこにポート8080を反映させるべきかを全く理解出来ていなかった私は、ALBのセキュリティグループのIngressに、愚かにも以下のように設定し当該エラーは起きました。

sample_template_mistake.yml
  ALBSG: 
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: !Ref VPC
      GroupName: !Sub ${PJPrefix}-sg-alb
      GroupDescription: for ALB.
      Tags: 
        - Key: Name
          Value: !Sub ${PJPrefix}-sg-alb
# Ingress
  ALBSGIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      FromPort: 80
      ToPort: 80
      IpProtocol: tcp
      SourcePrefixListId: pl-58a04531
      GroupId: !GetAtt ALBSG.GroupId

  ALBSGIngress8080:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      FromPort: 8080
      ToPort: 8080
      IpProtocol: tcp
      SourcePrefixListId: pl-58a04531
      GroupId: !GetAtt ALBSG.GroupId

※補足として現在の私の理解では、リスナー自体とタスク定義のPortMappingsには必要/上記のようなセキュリティグループは勿論、ターゲットグループのportやHealthCheckportには不要の認識です。(ここは100%の確信ではない為、認識にずれや不足がある場合是非ご指摘いただけたら幸いです)


ともあれ、上記のようにSourcePrefixListIdにCloudFront用のManagedPrefixListである「com.amazonaws.global.cloudfront.origin-facing」を設定したIngressルールを用意しており、

80番単独だった時は問題なかったのですが、

冒頭の経緯から「もう一つおまけに」と8080番用を追加した時にそれは起きました。

「訳:セキュリティグループごとのルール数が上限に達しました。」との事です。

ドキュメントを確認するとセキュリティグループ当たりのインバウンドルール、またはアウトバウンドルールのクオータ(上限数)はデフォルトで60との事です。

これを受け、コンソールに当該PrefixListを確認しに行ってみると、以下のように2023年3月16日現在エントリ数は45となっています。

つまりこれを2つ設定している訳ですからm合計90でエラーメッセージが登場するという事でした。

このあたりは以下の記事を見て状況の把握に至りました。
https://zenn.dev/ncdc/articles/d3fb859a5ef649

解決までの数歩

これを超えるルールを設定したい場合、上限緩和申請が必要との事。

「なるほど・・!上限緩和申請ですね!」となる手前で強烈な違和感がブレーキをかけました。


そもそもこんな事は起きえるか

Blue/Greenを目的に8080用のリスナーを用意した事で、CloudFrontからALBへのインバウンド8080を開ける必要性は全くない。

という当たり前のことに気がつきます。

つまりALBのセキュリティグループのIngressルールにCloudFront用のManagedPlefixListが複数つく事はないという理解に落ち着きました。

結論

先ほどALB側に追加した謎のIngressルールを削除し当該エラーとはさようならしました。

最後に

不毛な時間を過ごした虚しさが襲ってきましたが、「こんな事でもないと出会えなさそうなエラーと遭遇出来たので」と無理やり気持ちに蓋をした次第です。

まだまだ理解の足りない事が多い為日々精進いたします。

お付き合いいただき有難うございました。

デベキャン

Discussion