[アップデート] VPCプレフィックスリストの最大エントリ数が変更可能になりました

待望の機能がやっときてくれました!
2021.08.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

本日AWSよりVPCプレフィックスリストの最大エントリ数が変更可能になり、またResource Access Manager (RAM)を使って他AWSアカウントと共有可能になった旨の発表がありました。

待望の機能がやっと来てくれました。

これまでVPCプレフィックスリストの最大エントリ数は作成時に決めた値から変更できず、私が過去の記事で注意点を書いた様に導入に際しては慎重な設計が必要だったのですが、これでもう何の心配もなくカジュアルに使うことができます。

(ちなみにルール数の計上はこれまで通り最大エントリ数分消費されます)

やってみた

それでは早速やってみます。
今回は私の検証アカウントの東京リージョンでtest-prefixという名前のプレフィックスリストを用意しました。

初期状態で最大エントリ数=10とし、うち3エントリデータを入れておきました。

1. 最大エントリ数のリサイズ

最初にエントリ数のリサイズを行います。
残念ながら現時点ではマネジメントコンソールのGUIからは最大エントリ数の変更はできませんでした。

(現時点ではマネジメントコンソールから設定変更は不可)

このため最大エントリ数を変更するには最新のAWS CLI(Ver.2.2.33 または Ver.1.20.30 以降)を使う必要があります。
AWS CLIのaws ec2 modify-managed-prefix-listコマンドを以下の様にすることで最大エントリ数を変更できます。

aws ec2 modify-managed-prefix-list --prefix-list-id <対象プレフィックスリストのID> --max-entries <変更したいエントリ数>

今回は半分の10 → 5に変更してみます。
このコマンド実行すると以下の様な形のJSONを返します。

# AWS CLI Ver.2.2.33 を使用
C:\> aws --version
aws-cli/2.2.33 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

# プレフィックスリスト (pl-0f184320f6443b47c) の最大エントリ数を 5 に変更
C:\> aws ec2 modify-managed-prefix-list --prefix-list-id pl-0f184320f6443b47c --max-entries 5
{
    "PrefixList": {
        "PrefixListId": "pl-0f184320f6443b47c",
        "AddressFamily": "IPv4",
        "State": "modify-in-progress",
        "StateMessage": "Attempting to modify maximum entries from (10) to (5).",
        "PrefixListArn": "arn:aws:ec2:ap-northeast-1:xxxxxxxxxx:prefix-list/pl-0f184320f6443b47c",
        "PrefixListName": "test-prefix",
        "MaxEntries": 10,
        "Version": 1,
        "OwnerId": "xxxxxxxxxx"
    }
}

StateMessage

"StateMessage": "Attempting to modify maximum entries from (10) to (5)."

とある様に最大エントリ数の変更が始まり、少し待つと完全に変更が完了します。
変更後は下図の様に最大エントリ数=5になりました。

当たり前ですが既存のエントリ数より少ない数に減らすことはできません。

# 既存のエントリ数(3)より小さい値に変更しようとするとエラー
C:\> aws ec2 modify-managed-prefix-list --prefix-list-id pl-0f184320f6443b47c --max-entries 2

An error occurred (InvalidPrefixListModification) when calling the ModifyManagedPrefixList operation: The requested maximum entries of (2) is less than the current entry count of (3).

また、プレフィックスリストがルートテーブルやセキュリティグループに登録済みの場合、それぞれの最大エントリ数 *1を超えてしまう様な変更もできません。

Unable to modify maximum entries from (5) to (50). The following VPC Route Table resources do not have sufficient capacity [rtb-xxxxxxxxx].

(上記は登録済みのルートテーブルの最大エントリ数を超えてしまう場合に出るエラー例)

2. 他AWSアカウントとの共有

作成したプレフィックスリストを他AWSアカウントと共有するにはRAMを使います。
RAMを新規作成する際のリソースタイプに「プレフィックスリスト」が増えてますので、共有したいリソースを選びリソース共有を作成します。

(今回は外部のプリンシパルを選んでます)

これで共有元の作業が完了したので、共有先のアカウントで「承認」を行います。

共有リソースの承認が終わればあとは通常のプレフィックスリストと同様に扱えます。

共有先ではプレフィックスリストの内容は変更できません。
AWSマネージドのプレフィックスリストと同様と考えれば分かりやすいかと思います。

もちろんプレフィックスリストを共有したあとでもリサイズは可能です。

注意点1

この更新ですが、残念ながら本日時点では

Support for prefix list and resize is available in all AWS Regions, except Asia Pacific (Osaka), GovCloud (US-East), GovCloud (US-West), China (Beijing), and China (Ningxia).

と大阪リージョンでは使えません。
とはいえそう遠くないうちに大阪でも使える様になると思いますので期待して待ちましょう。

注意点2

最大エントリ数を自由に変更できる様にはなりましたが、セキュリティグループやルートテーブルに登録済みの場合は登録先セキュリティグループ/ルートテーブルの上限に影響を受けます。

たとえばプレフィックスリストを登録したルートテーブルが複数あり、そのうちの一つでも余力が無い状態(最大の50エントリ登録済み)だとプレフィックスリストの最大エントリ数を増やすことはできません。

このためプレフィックスリストの最大エントリ数は常にある程度の余裕を持たせる設計にしておくのが良いと考えます。

最後に

以上となります。

待望の機能がやっと来てくれたので非常に嬉しいです。
これまでVPCプレフィックスリストの導入はかなり慎重に行ってきたのですが、これでカジュアルにガンガン導入できます。

脚注

  1. 上限緩和してない場合、1ルートテーブルあたり最大50エントリ、1セキュリティグループあたり最大60エントリ