Upgrading to the App Engine Flexible Environment Latest Release

This page is for developers using the flexible environment with the setting vm:true in their app.yaml and want to upgrade to the latest release, which requires changes in your app configuration.

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:

  1. In your app.yaml configuration file, replace the deprecated vm: true entry with env: flex. Example:
    runtime: php
    env: flex
    
  2. Review the breaking changes list to determine whether any additional changes are required in your app.yaml.
  3. During the upgrade, consider making changes to use new features.
  4. 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.yaml file is located, run the command:

    gcloud app deploy

  5. 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 move to 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.

    Warmup requests

    /_ah/warmup requests are not supported in the App Engine flexible environment.

    To warm up your app, implement a health check handler that only returns a ready status when the application is warmed up.

    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.

    Static files

    If you are defining static files in the handlers: section of app.yaml, 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.

    Hidden resources

    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 gcloud app instances. You can also initiate SSH connections from the GCP Console Instances page.

    Breaking changes

    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 the env: flex configuration.

    Library deprecations

    The following libraries and their related services were deprecated on November 15th, 2016, and are not supported in the flexible environment:

    app.yaml changes

    Replace the deprecated configuration vm:true in your app.yaml file, with the flexible environment setting env:flex.

    Authentication changes

    You must also update the app.yaml file to remove or replace the other configuration setting that have been deprecated:

    • Secure handlers
      The secure setting under handlers is now deprecated for the App Engine flexible environment. If you need SSL redirection, you can update your application code and use the X-Forwarded-Proto header to redirect http traffic. You can also use the HTTP Strict Transport Security response header.
    • Login handlers
      The login setting under handlers is 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)
    APPENGINE_LOADBALANCER
    APPENGINE_LOADBALANCER_IP
    GAE_AFFINITY
    GAE_APPENGINE_HOSTNAME
    GAE_MINOR_VERSION
    GAE_LONG_APP_ID GOOGLE_CLOUD_PROJECT
    GAE_MODULE_INSTANCE GAE_INSTANCE
    GAE_MODULE_NAME GAE_SERVICE
    GAE_MODULE_VERSION GAE_VERSION
    GAE_PARTITION
    GAE_VM
    HOSTNAME
    MEMCACHE_ENV_DEBIAN_FRONTEND
    MEMCACHE_ENV_PORT
    MEMCACHE_NAME
    MEMCACHE_PORT
    MEMCACHE_PORT_11211_TCP
    MEMCACHE_PORT_11211_TCP_ADDR
    MEMCACHE_PORT_11211_TCP_PORT
    MEMCACHE_PORT_11211_TCP_PROTO
    MODULE_YAML_PATH
    SERVER_SOFTWARE
    USE_MVM_AGENT

    Request header changes

    The following HTTP request headers have changed:

    • Removed from all requests:

      • X-GOOGLE-REAL-IP
      • X-APPENGINE-API-TICKET
      • X-APPENGINE-AUTH-DOMAIN
      • X-APPENGINE-DATACENTER
      • X-APPENGINE-DEFAULT-VERSION-HOSTNAME
      • X-APPENGINE-HTTPS
      • X-APPENGINE-REQUEST-ID-HASH
      • X-APPENGINE-REQUEST-LOG-ID
      • X-APPENGINE-USER-IS-ADMIN
      • X-APPENGINE-USER-IP
    • Now included with all requests:

      • X-FORWARDED-FOR
      • X-CLOUD-TRACE-CONTEXT
      • X-FORWARDED-PROTO

    Memcache service

    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.

    Task queues

    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:

    https://instanceID-dot-versionID-dot-serviceID-dot-app-id.appspot.com

    New features to consider when upgrading

    Take note of the following improvements that you can take advantage of when upgrading your app:

    Pricing changes

    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 instances.

    Tip: Spending limits are not supported in the flexible environment. You should consider creating budgets and setting alerts.

Was this page helpful? Let us know how we did:

Send feedback about...

App Engine flexible environment for PHP docs