Two questions: How much downtime can you afford? What's your budget to fight against that downtime? Essentially a question to figure on the basis of how much loss does downtime incur you.
Basic idea would be to replicate the entire stack over AWS, test it and once that's functional, you can do something like pausing the live site to only be read-only mode (maintenance) and then update the database(s) over at AWS by taking a fresh dump from GC.
Make changes in application to make GC environment connect to AWS dbs and use them.
Then make the site go out of maintenance and all db updates are happening over at GC. Simply update the DNS at this point to move the traffic over to AWS. You can lower your TTL for DNS a few days before to make this go fast. That's pretty much it but definitely not a single solution for all needs, most should fit.
👋 Join WIP to participate