Another option for you to consider (I've also used this);
In Amazon AWS you have availability zones (AZ). Each AZ is a different physical data centre. Each AZ is also a unique subnet (can also be multiple subnets).
To actually do application redundancy you need to place your redundant servers in different AZs. So for clients to access those redundant services they need a way of being able to change from the primary to backup IP addresses (or they could be used both at the same time if active/active).
So considering this, you can also simply place a VMX in each AZ, and run them active/active. Configure each VMX to only give out the routes for the AZ it is in. You also need to configure an AWS route-table for each subnet so that it sends traffic to your spokes only via its local VMX.
This preserves the full L3 failover design of the applications and keeps the network routing and deployment simple.