Question: How do I migrate from AWS WAF classic to AWS WAF and what is the downtime during the migration?

I want to migrate my current AWS WAF classic deployment to AWS WAF. How do I do this? Is there downtime involved in the migration?Short descriptionThere are three options to migrate from AWS WAF Classic to AWS WAF:Manual migrationAutomated using the AWS WAF security automationAutomated using the AWS WAF classic migration wizardImportant: Before starting the migration, see Migration caveats and limitations.

ResolutionManual migrationManual migrations are suitable for simple AWS WAF deployments. A manual migration is re-creating classic AWS WAF resources using AWS WAF. The switch from the AWS WAF classic web ACL association to the new AWS WAF web ACL might cause a brief disruption.To perform a manual migration, do the following:To create a new AWS WAF deployment, see Getting started with AWS WAF.Complete the steps in Migrating a web ACL: switchover.See Migrating a web ACL: additional considerations to optimize the new AWS WAF deployment.AWS WAF security automation migrationUse AWS WAF security automation to automatically migrate to AWS WAF using AWS CloudFormation. Then, associate the new web ACL with a supported resource, such as:Amazon CloudFront distributionAmazon API Gateway REST APIApplication Load Balancer (ALB)AWS AppSync GraphQL APIThere's no downtime involved in this migration process. It's a best practice to test and tune your AWS WAF protections before implementing rules in production.Important: When migrating an AWS WAF classic deployment created by the AWS WAF security automation, you must not use the AWS WAF classic migration wizard. For additional information, see Migration caveats and limitations.To deploy a new web ACL using AWS WAF security automation, do the following:Open the AWS WAF Automation on AWS page.Navigate to AWS Solution overview.Choose Launch in the AWS Console on the right-hand side of the diagram.For Region, choose the AWS Region where you want to create your AWS WAF resources.For Create stack, use the default settings and then choose Next.Enter a Stack name and choose the Parameters for your use case. For information on Parameters, see Launch a stack.Important: Be sure that you choose the correct Endpoint Type. The type must match the resource you're currently using in AWS WAF classic. If you're using Amazon API Gateway REST API or Application Load Balancer, then choose ALB.Choose Next.(Optional) Configure stack options or use the default settings. Then, choose Next.Review your configuration. Then, acknowledge that CloudFormation will create AWS Identity and Access Management (IAM) resources in your account.Choose  Create Stack.CloudFormation creates a new stack with all the resources required for the AWS security automation, including a new AWS WAF web ACL.Important: The new AWS WAF web ACL isn't automatically associated with any AWS resources.To complete the migration to AWS WAF, you must manually associate the AWS WAF web ACL with your AWS resource. This process automatically disassociates the AWS resource from the AWS WAF classic web ACL. After a resource is associated with this AWS WAF web ACL, requests are inspected by the rules in the new AWS WAF web ACL.After successfully migrating to AWS WAF, it's a best practice to review Migrating a web ACL: additional considerations to optimize the new AWS WAF deployment.Note: You might need to manually re-create existing rules that can't be automatically migrated. For more information, see Migrating a web ACL: manual follow-up.Automated migration using the AWS WAF classic migration wizardUse the AWS WAF Classic migration wizard to automatically migrate existing AWS WAF classic resources to AWS WAF. There are cases where the AWS WAF classic migration must not be used. For more information, see Migration caveats and limitations.There's no downtime involved in this migration process. It's a best practice to test and tune your AWS WAF protections before implementing rules in production.To deploy a new web ACL using automated AWS WAF classic migration wizard, do the following:Open the AWS WAF console.In the navigation pane, choose Switch to AWS WAF Classic.In the navigation pane, choose Web ACLs.At the top of the main page, choose the migration wizard.For Web ACL, choose the AWS Region where you want to create your AWS WAF resources. Then, choose the AWS WAF classic web ACL that you want to migrate.For Migration configuration, choose Create new to create a new S3 bucket to be used by CloudFormation during the migration.  Note: The S3 bucket must be in the same Region as the web ACL and its name must start with the prefix aws-waf-migration-.It's a best practice to use Auto apply the bucket policy required for migration to avoid permission issues.Choose your preferred option for Choose how to handle rules that can't be migrated.Note: It's a best practice to use Exclude rules that can't be migrated to continue the migration. However, you must manually create rules that can't be automatically migrated when the migration has completed.Choose Next.Choose Start creating CloudFormation template.Choose  Create CloudFormation Stack to start the deployment of the AWS WAF CloudFormation stack.For Create stack, use the default settings and then choose Next.Enter a Stack name and choose the Parameters for your use case. For information on Parameters, see Launch a stack.Important: Be sure that you choose the correct Endpoint Type. The type must match the resource you're currently using in AWS WAF classic. If you're using Amazon API Gateway REST API or Application Load Balancer, then choose ALB.Choose Next.(Optional) Configure stack options or use the default settings. Then, choose Next.Review your configuration, then choose  Create Stack.CloudFormation creates a new stack with all the resources that are migrated from AWS WAF classic, including a new AWS WAF web ACL.Important: The new AWS WAF web ACL isn't automatically associated with any AWS resources.To complete the migration to AWS WAF, you must manually associate the AWS WAF web ACL with your AWS resource. This process automatically disassociates the AWS resource from the AWS WAF classic web ACL. After a resource is associated with this AWS WAF web ACL, requests are inspected by the rules in the new AWS WAF web ACL.After successfully migrating to AWS WAF, it's a best practice to review Migrating a web ACL: additional considerations to optimize the new AWS WAF deployment.Note: You might need to manually re-create existing rules which could not be automatically migrated. For more information, see Migrating a web ACL: manual follow-up.

Related informationMigrating your rules from AWS WAF Classic to the new AWS WAF