This page is for developers using the flexible environment
with the setting
vm:true in their
want to upgrade to the latest release, which requires changes in your app
This page does not apply to upgrading from the App Engine standard environment, which is covered in Migrating Services from the Standard Environment to the Flexible Environment.
Upgrading to the flexible environment
To upgrade to the flexible environment from the Managed VMs environment:
app.yamlconfiguration file, replace the deprecated
vm: trueentry with
env: flex. Example:
runtime: python env: flex
Review the breaking changes list to
determine whether any additional changes are required in your
- During the upgrade, consider making changes to use new features.
After making the necessary changes, deploy
the new version of your app to App Engine.
For example, from the root directory of your app where your
app.yamlfile is located, run the command:
gcloud app deploy
Shared-core machine types
Shared-core machine types, which have less than 1 vCPU, are not supported in the
App Engine flexible environment. If you are using shared core machines, when you
env:flex, you must upgrade your machines to be at least one core.
Alternatively, you can move the app to the App Engine standard environment.
/_ah/warmup requests are not supported in the App Engine flexible environment.
For example, you can create a readiness check that returns a ready status after initializing the cache so your app won't receive traffic until it is ready.
If you are defining static files in the
then these static files are served from App Engine instances directly, instead
of from other App Engine infrastructure. The interface and behavior are
identical, but a small amount of CPU and other resources are consumed on App
Engine instances when a file is served.
The underlying resources behind flexible environment deployments (including Cloud Load Balancing, Compute Engine instances, and Managed Instance Groups) are hidden in Google Cloud Platform Console in order to provide a fuller abstraction of an App Engine application and its instances. Individual instances can be viewed and controlled in the GCP Console on the Instances page.
Instances can still be unlocked and reached via SSH for debugging purposes.
Instead of using the
gcloud compute instances command, use
instances. You can also initiate SSH connections from the
GCP Console Instances page.
Upgrading to the App Engine flexible environment requires a few
changes to your code and configuration files. This section includes deprecations
and breaking changes that you must address before deploying your app with
env: flex configuration.
The following libraries and their related services were deprecated on November 15th, 2016, and are not supported in the flexible environment:
Replace the deprecated configuration
vm:true in your
with the flexible environment setting
You must also update the
file to remove or replace the other configuration setting that have been
- Secure handlers
handlersis now deprecated for the App Engine flexible environment. If you need SSL redirection, you can update your application code and use the
X-Forwarded-Protoheader to redirect
httptraffic. You can also use the HTTP Strict Transport Security response header.
- Login handlers
handlersis now deprecated for the App Engine flexible environment. You should follow the guidance for User service migration.
Environment variable changes
The following environment variables have been removed or renamed. When available, the replacement environment variable has been listed:
|Deprecated environment variable||New environment variable (where applicable)|
Request header changes
The following HTTP request headers have changed:
Removed from all requests:
Now included with all requests:
The Memcache service is currently not available for the App Engine flexible environment. An alpha version of the memcache service will be available shortly. If you would like to be notified when the service is available, fill out this early access form.
If you need access to a memcache service immediately, you can use the third party memcache service from Redis Labs. To access this service, see Caching Application Data Using Redis Labs Memcache.
You can also use Redis Labs Redis Cloud, a third party fully-managed service. To access this service, see Caching Application Data Using Redis Labs Redis.
To use the push Task Queue service outside of the first generation standard environment, you can use the Cloud Tasks API beta.
In many cases where you might use pull queues, such as queuing tasks or messages that will be pulled and processed by separate works, Cloud Pub/Sub is a good alternative that offers similar functionality and delivery guarantees.
URL routing changes
You can no longer route traffic to specific instances for apps that are running in the flexible environment. For example, you cannot direct requests to instance instanceID:
New features to consider when upgrading
Take note of the following improvements that you can take advantage of when upgrading your app:
- Multi-zone deployments
- Deployments using the required
env: flexconfiguration are able to utilize autoscaled instances across multiple availability zones for their underlying Compute Engine virtual machines.
- Custom instance shapes
- You can choose a custom machine type when configuring machine resources for the App Engine flexible environment. Custom Machine Types allow you to select customized CPU, memory, and disk settings to match the needs of your application.
- Networking upgrades
- App Engine flexible environment includes a new networking stack based on Google Cloud Load Balancing, which has resulted in the following:
The App Engine flexible environment release introduces a new pricing
model. Customers who are currently using
vm:true will receive one year of raw
Compute Engine pricing. To view the new prices for the
flexible environment, see Costs for flexible environment
Tip: Spending limits are not supported in the flexible environment. You should consider creating budgets and setting alerts.