The standalone App Engine SDK was deprecated as of July 30, 2019, and it is now shut down. The following table lists features and their recommended alternatives:
| Deprecated | Recommended action |
|---|---|
| standalone App Engine SDK | Download Google Cloud CLI |
| Access App Engine legacy APIs using the App Engine SDK | Migrate to an unbundled Google Cloud or third-party service, or access bundled services using the App Engine services SDK if you are using a second-generation runtime |
appcfg commands | Migrate from AppCfg to gcloud command line |
dev_appserver.sh commands | For local development, run the java_dev_appserver.sh command from the bin directory of gcloud CLI |
Java App Engine SDK-based plugin for Maven (com.google.appengine.appengine-maven) | Migrate to the gcloud CLI-based Maven plugin |
Java App Engine SDK-based plugin for Gradle (com.google.appengine.appengine-gradle) | Migrate to the gcloud CLI-based Gradle plugin |
cron.xml, datastore-index.xml, dispatch.xml, and queue.xml file formats | Migrate automatically using the gcloud beta app migrate-config tool or migrate your xml to yaml files manually. |
Migration timetable
July 30, 2019: The standalone App Engine SDK-based tooling is deprecated. August 30, 2020: The standalone App Engine SDK is not available for download and might not work, if used. August 30, 2020: Google shut down and removed support for the standalone App Engine SDK.
Backward non-compatible features
As a result of the shutdown of the appcfg tool and the standalone App Engine SDK, the following features are currently not supported in gcloud CLI:
- Downloads of your application's files with AppCfg.
Migrating XML to YAML file formats
gcloud CLI does not support the following file formats:
cron.xmldatastore-index.xmldispatch.xmlqueue.xml
The following examples demonstrate how to migrate your xml files to yaml files.
Migrating your files automatically
To migrate your xml files automatically:
You must have gcloud CLI version 226.0.0 or later. To update to the latest version:
gcloud components updateFor each file you'd like to migrate, specify one of the following subcommands (
cron-xml-to-yaml,datastore-indexes-xml-to-yaml,dispatch-xml-to-yaml,queue-xml-to-yaml) and file name:gcloud beta app migrate-config queue-xml-to-yaml MY-QUEUE-XML-FILE.xmlManually double-check the converted file before deploying to production.
For a successful sample
xmltoyamlfile conversion, see the Migrating your files manually tabs.
Migrating your files manually
To manually migrate your xml files to yaml files:
cron.yaml
Create a cron.yaml file with a cron object containing a list of objects, each with fields that correspond to each of the <cron> tag attributes in your cron.xml file, as shown below.
Converted cron.yaml file:
cron: - url: '/recache' schedule: 'every 2 minutes' description: 'Repopulate the cache every 2 minutes' - url: '/weeklyreport' schedule: 'every monday 08:30' target: 'version-2' timezone: 'America/New_York' description: 'Mail out a weekly report' Original cron.xml file:
<?xml version="1.0" encoding="UTF-8"?> <cronentries> <cron> <url>/recache</url> <description>Repopulate the cache every 2 minutes</description> <schedule>every 2 minutes</schedule> </cron> <cron> <url>/weeklyreport</url> <description>Mail out a weekly report</description> <schedule>every monday 08:30</schedule> <timezone>America/New_York</timezone> <target>version-2</target> </cron> </cronentries> For more information, see the cron.yaml reference documentation.
dispatch.yaml
Create a dispatch.yaml file with a dispatch object containing a list of objects, each with fields that correspond to each of the <dispatch> tag attributes in your dispatch.xml file, as shown below.
Converted dispatch.yaml file:
dispatch: - url: '*/favicon.ico' module: default - url: 'simple-sample.uc.r.appspot.com/' module: default - url: '*/mobile/*' module: mobile-frontend Original dispatch.xml file
<?xml version="1.0" encoding="UTF-8"?> <dispatch-entries> <dispatch> <url>*/favicon.ico</url> <module>default</module> </dispatch> <dispatch> <url>simple-sample.uc.r.appspot.com/</url> <module>default</module> </dispatch> <dispatch> <url>*/mobile/*</url> <module>mobile-frontend</module> </dispatch> </dispatch-entries> For more information, see the dispatch.yaml reference documentation
index.yaml
Create an index.yaml file with an indexes object containing a list of objects, each with fields that correspond to each of the <datastore-index> tag attributes in your datastore-indexes.xml file, as shown below.
Converted index.yaml file:
indexes: - ancestor: false kind: Employee properties: - direction: asc name: lastName - direction: desc name: hireDate - ancestor: false kind: Project properties: - direction: asc name: dueDate - direction: desc name: cost Original datastore-index.xml file:
<?xml version="1.0" encoding="utf-8"?> <datastore-indexes autoGenerate="true"> <datastore-index kind="Employee" ancestor="false"> <property name="lastName" direction="asc" /> <property name="hireDate" direction="desc" /> </datastore-index> <datastore-index kind="Project" ancestor="false"> <property name="dueDate" direction="asc" /> <property name="cost" direction="desc" /> </datastore-index> </datastore-indexes> For more information, see the index.yaml reference documentation.
queue.yaml
Create a queue.yaml file with a queue object containing a list of objects, each with fields that correspond to each of the <queue> tag attributes in your queue.xml file, as shown below.
Converted queue.yaml file:
queue: - name: fooqueue mode: push rate: 1/s retry_parameters: task_retry_limit: 7 task_age_limit: 2d - name: barqueue mode: push rate: 1/s retry_parameters: min_backoff_seconds: 10 max_backoff_seconds: 200 max_doublings: 0 Original queue.xml file:
<queue-entries> <queue> <name>fooqueue</name> <rate>1/s</rate> <retry-parameters> <task-retry-limit>7</task-retry-limit> <task-age-limit>2d</task-age-limit> </retry-parameters> </queue> <queue> <name>barqueue</name> <rate>1/s</rate> <retry-parameters> <min-backoff-seconds>10</min-backoff-seconds> <max-backoff-seconds>200</max-backoff-seconds> <max-doublings>0</max-doublings> </retry-parameters> </queue> <queue-entries>