【AWS】今からでも間に合うAWS WAF ClassicからAWS WAF (v2) へのマイグレーション
はじめに
AWS WAFを利用している方は既知の通り、AWS WAF Classic のサポートが2025年9月30日に終了しますしました。
類似記事は多く存在しますが、終了直前ながらたまたまWAFv2へ移行する機会がありましたので、
せっかくですから記事にしました。
まだ移行をお済みでない方はぜひ参考にしていただければと思います。
※記事の添付画像はアカウント情報を伏せるため、多数のモザイクがかかっている点、あらかじめご了承下さい。
移行手順
WAF Classicの確認
まずはコンソールからAWS WAF Classicのページへ進みます。
(ページへの進み方は割愛します)
まずはお使いのWeb ACLが残っていないか、各リージョン確認します。
画面は東京リージョンですが、ここでは1つのWeb ACLに「8つのルール」と「1つのALB」に使用されているものをWAFv2へ移行します。
必ず、Rulesタブの「AWS resources using this web ACL」で使用しているリソースを確認しておいて下さい。
migration wizardを開く
次に、マイグレーションウィザードを開きます。
以下URLから開くか、もしくは画面上部に「migration wizard」へのリンクが表示されていると思いますので、そこから開きます。
(以下URLは東京リージョンに指定されています)
マイグレーション手順
ここでは移行したいWeb ACLを選択します。
マイグレーションはS3バケットとCloudFormationを使用します。
マイグレーションに使用するS3バケットは、aws-waf-migration-
から始まるバケットが必要です。
今回は「Create new」から作成しました。
バケット名はaws-waf-migration-{WEBACL名}
にすると分かりやすいかもしれません。(ただし世界でユニークな名前でなければ作成できない)
バケット作成後、先程のマイグレーション画面に戻ると、作成したバケットを選択できるようになります。
選択したら、S3バケットポリシーの設定はデフォルトのままで良いので、「Next」で次に進みましょう。
マイグレートを実行するCloudFormationのテンプレートを作成する確認です。
「Start creating CloudFormation template」を選択します。
「Create CloudFormation stack」を選択します。
CloudFormationの画面が開きます。
ここではそのまま「次へ」と進んでも良いのですが、デフォルトのままだと任意の名前のWebACL名にならないという情報を確認していたので、少し遠回りしてスタックの編集画面に飛びます。
「Infrastructure Composerで表示」を選択します。
ここでもし以下のように「互換性のないテンプレート」という画面が出た方は、S3バケット名に問題があるかもしれません。
完全な解決方法はわかりませんが、バケット名に「.(ピリオド)」を使ったもので進めると以下にぶち当たり、使わない名前にしたら解決出来ました。
WebACL名をカスタマイズしたい方は、S3バケットの作成からやり直すことをおすすめします。
編集するポイントは、"Type":"AWS::WAFv2::WebACL"
のProperties.Name
です。
ここを元のwaf classicで設定していたWeb ACL名と同じにすれば、同名でWAFv2に移行できます。
画面はJSONですが、YAML表示でも同様で、仕様が同じなら皆さん上部にすぐ見つけられるかと思います。
編集したら念の為上部の「検証」ボタンを選択し、問題なければ「テンプレートを作成」を選択します。
確認画面が表示されますので、「確認してCloudFormationに進む」を選択します。
スタック作成画面に戻り、「テンプレートはInfrastructure Composerから正常にインポートされました。」と表示されるので、「次へ」を選択します。
次にスタック名を入力します。
スタックを編集しないと、自動でAWSWAFMigration-WebACL-xxxxxxxxx
という名前になりますが、スタック編集すると全部自分で名付けることになります。
ここは任意の名前をつけて下さい。
名前を入力したら「次へ」を選択します。
スタックオプションの設定です。
今回は何も変更しないのでこのまま「次へ」を選択します。
確認して作成の画面です。
下にスクロールし、「送信」を選択します。
あとはCloudFormationの画面で、作成したスタックがCREATE_COMPLETE
になるのを待ちましょう。
WAFv2の確認
CloudFormationのスタックが完了したら、早速指定したWebACLが無事マイグレーションされたか確認しましょう。
今回移行したWebACLは8つのAllowルールが設定されていましたが、
確認すると、きちんと同じ優先度順で同名の設定がされていました。
この時点で「WAFv2に無事移行出来ました、めでたしめでたし」という記事がいくつか見られましたが、ここで安心しないで下さい。
リソースとの関連付けは自動でやってくれない仕様ですので、ここで終わってしまうと2025年10月からWAFが適用されない状況になるでしょう。
WAFに関連づいていたリソースを新しいWAFのWebACLに変更
移行したWebACLの「Associated AWS resources」タブから「Add new resources」を選択します。
今回は1つのALBに使用していました。
最初の方で確認しましたWAF classic側で使用しているリソースを、以下の画面から指定します。
設定を終えたら、念の為WAF classic側を確認してみましょう。
設定してあった関連リソースの表示が消えているのが確認できるかと思います。
このように、WAFv2で関連リソースを設定してしまえば、WAF classic側で自動で削除してくれるようです。
これで本当にめでたしめでたしといったところでしょうか?
おわりに
というわけで、ありふれた内容の記事でしたが、期限が迫っていることもあり、まだ需要があるのではないかと思い執筆いたしました。
移行がまだ済んでいない方はお早めにご確認下さい。
他の記事と合わせて誰かの参考になれば幸いです。
賞味期限約1ヶ月の記事を書くのもそんなに悪くないですね。
というわけで、ここまで読んでいただきありがとうございました。
参考
Discussion