Hey Mountain Man,
My team and I tried to achieve the same, but in the end, we gave up and moved to a custom Kubernetes network infrastructure instead. Here are a few caveats that in the end put the nails in the coffin for WordPress & App Engine:
Except for the official plugin from Google all other plugins hook into the media uploading process. Beside of the custom integrations that ship with WP Stateless (e.g. for Elementor), it requires plugins to use the default media uploading process, which fires the required actions and filters (e.g. wp_handle_upload_prefilter). This means that plugins that use a custom way to write to the uploads folder, will not be recognized by WP Stateless and similar plugins.
They do it for reason. Hooking into every file write process like the Google plugin does on every request, can be very costly. Once you have installed a couple of plugins that rely on the uploads directory, you will notice a hefty performance drop.
What we initially liked about App Engine is that it appeared to cope well, even with larger WordPress websites. The performance was stunning. But after we had to do some optimization to get a better score in PageSpeed Insights the performance dropped significantly. Page caching made it even worse because before the cached page is output, most caching plugins check if the file exists, this is rather slow, if you use GCS for this.
Google ships App Engine with its own Memcache integration, which we thought will solve these issues (we even wrote a custom caching plugin to utilize this feature), however, it only works with PHP 5.5 in App Engine.
As mentioned earlier, we have now built our own Kubernetes infrastructure, which basically simulates App Engine, but keeps the uploads folder writable.
For page caching, we have our own Redis services inside the network and a (real) CRON function that syncs files from the uploads folder to GCS every minute and also after some actions are triggered.
This way we can use any plugins without customizing them and those plugins that allow us to use a CDN URL to point to their files (like Fast Velocity Minify => awesome for PageSpeed Insights) work great by using the GCS URL as a CDN URL.
If you want to go the same route, one more tip: Google Kubernetes Persistant Storage Volume that can be used to store persistent data across multiple pods, does not allow multiple nodes to write to the volume. Hence we moved away from this integration and use the CRON function instead. Now our Kubernetes network spins up new nodes when we see traffic spikes and shuts nodes down when there is only a low amount of traffic. Pretty much everything that App Engine does, the Kubernetes network can do as well.
I hope this helps you to move forward. I just could not see someone else struggling with this nightmare of a situation ??
Best,
Jan