It is frustrated that Elastic Beanstalk console does not allow you deselect the custom availability zone once you selected and applied . I guess AWS just missed that function in the javascript.
Here is a example. There is no way for me to deselect ap-southeast-2a in the custom availability zone in the Elastic Beanstalk console.
The solution is to save the current configuration -> download the configuration file from S3 -> modify it -> upload to the original bucket with the same name -> load configuration.
By default, Elastic Beanstalk saves the environment configuration to the bucket
Here is the modification I made. It takes about 2 minutes to apply, and no outage was required.
Before aws:autoscaling:asg: Availability Zones: Any 1 MinSize: '1' MaxSize: '1' Custom Availability Zones: ap-southeast-2a After aws:autoscaling:asg: Availability Zones: Any MinSize: '1' MaxSize: '1'