From my limited experience of doing ETL-type tasks on App Engine, I'd suggest using a "backend instance" with basic scaling if you can (although these instances are probably slower than the n1-standard-2, and it certainly will have much less memory). This would avoid the complexity of managing the lifetime of some other instance, and if you have a bunch of existing App Engine standard stuff, is simpler to manage. Backend instances can take a long time to process a cron task request, or can start a background thread to do the ETL, so you can avoid the request timer:
https://cloud.google.com/appengine/docs/java/an-overview-of-app-engine
If you really need to run this on a machine with more memory or custom code, we've used an App Engine flexible module that we leave running all the time. This does cost us some fraction of the instance time, but we figured the simplicity of not needing to deal with starting, stopping, and waiting for instance boot makes it worth it, and relative to our other costs, running a single small VM 24x7 is not significant. We used an AE flexible module so that App Engine manages the instance for us, and so deploying to it is extremely similar to our other app engine code.