Migrating to gcloud CLI

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.xml
  • datastore-index.xml
  • dispatch.xml
  • queue.xml

The following examples demonstrate how to migrate your xml files to yaml files.

Migrating your files automatically

To migrate your xml files automatically:

  1. You must have gcloud CLI version 226.0.0 or later . To update to the latest version:

      gcloud 
      
     components 
      
     update 
     
    
  2. For 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 
     . 
     xml 
     
    
  3. Manually double-check the converted file before deploying to production.

    For a successful sample xml to yaml file 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 
> 
Create a Mobile Website
View Site in Mobile | Classic
Share by: