Eseguire la migrazione all'interfaccia a riga di comando gcloud

L'SDK App Engine standalone è stato ritirato il 30 luglio 2019 e ora è disattivato. La tabella seguente elenca le funzionalità e le relative alternative consigliate:

Ritirato Azione consigliata
SDK App Engine autonomo Scarica Google Cloud CLI
Accedere alle API legacy di App Engine utilizzando l'SDK App Engine Esegui la migrazione a un servizio di terze parti o Google Cloud non integrato oppure accedi ai servizi integrati utilizzando l'SDK dei servizi App Engine se utilizzi un runtime di seconda generazione
appcfg comandi Eseguire la migrazione da AppCfg alla riga di comando gcloud
dev_appserver.sh comandi Per lo sviluppo locale, esegui il comando java_dev_appserver.sh dalla directory bin di gcloud CLI.
Plug-in basato su Java App Engine SDK per Maven (com.google.appengine.appengine-maven) Esegui la migrazione al plug-in Maven basato su gcloud CLI
Plug-in basato sull'SDK Java App Engine per Gradle (com.google.appengine.appengine-gradle) Migrazione al plug-in Gradle basato su gcloud CLI
Formati di file cron.xml, datastore-index.xml, dispatch.xml e queue.xml Esegui la migrazione automaticamente utilizzando lo strumento gcloud beta app migrate-config o esegui la migrazione manuale dei file xml in file yaml.

Tabella di marcia della migrazione

30 luglio 2019: gli strumenti autonomi basati sull'SDK App Engine sono ritirati. 30 agosto 2020: l'SDK autonomo di App Engine non è disponibile per il download e potrebbe non funzionare, se utilizzato. 30 agosto 2020: Google ha chiuso e rimosso il supporto per l'SDK App Engine autonomo.

Funzionalità non compatibili con le versioni precedenti

A seguito della chiusura dello strumento appcfg e dell'SDK App Engine autonomo, le seguenti funzionalità non sono attualmente supportate in gcloud CLI:

  • Download dei file dell'applicazione con AppCfg.

Migrazione dei formati di file XML a YAML

gcloud CLI non supporta i seguenti formati file:

  • cron.xml
  • datastore-index.xml
  • dispatch.xml
  • queue.xml

Gli esempi seguenti mostrano come eseguire la migrazione dei file xml ai file yaml.

Eseguire la migrazione automatica dei file

Per eseguire automaticamente la migrazione dei file xml:

  1. Devi disporre di gcloud CLI versione 226.0.0 o successive. Per eseguire l'aggiornamento all'ultima versione:

    gcloud components update
    
  2. Per ogni file che vuoi migrare, specifica uno dei seguenti sottocomandi (cron-xml-to-yaml, datastore-indexes-xml-to-yaml, dispatch-xml-to-yaml, queue-xml-to-yaml) e il nome del file:

    gcloud beta app migrate-config queue-xml-to-yaml MY-QUEUE-XML-FILE.xml
    
  3. Controlla manualmente il file convertito prima di eseguire il deployment in produzione.

    Per una conversione riuscita del file di esempio xml in yaml, consulta le schede Eseguire la migrazione dei file manualmente.

Eseguire la migrazione manuale dei file

Per eseguire manualmente la migrazione dei file xml ai file yaml:

cron.yaml

Crea un file cron.yaml con un oggetto cron contenente un elenco di oggetti, ciascuno con campi che corrispondono a ciascuno degli attributi del tag <cron> nel tuo file cron.xml, come mostrato di seguito.

File cron.yaml convertito:

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'

File cron.xml originale:

<?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>

Per saperne di più, consulta la documentazione di riferimento di cron.yaml.

dispatch.yaml

Crea un file dispatch.yaml con un oggetto dispatch contenente un elenco di oggetti, ognuno con campi che corrispondono a ciascuno degli attributi del tag <dispatch> nel file dispatch.xml, come mostrato di seguito.

File dispatch.yaml convertito:

dispatch:
- url: '*/favicon.ico'
  module: default
- url: 'simple-sample.uc.r.appspot.com/'
  module: default
- url: '*/mobile/*'
  module: mobile-frontend

File dispatch.xml originale

<?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>

Per saperne di più, consulta la documentazione di riferimento di dispatch.yaml.

index.yaml

Crea un file index.yaml con un oggetto indexes contenente un elenco di oggetti, ognuno con campi che corrispondono a ciascuno degli attributi del tag <datastore-index> nel file datastore-indexes.xml, come mostrato di seguito.

File index.yaml convertito:

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

File datastore-index.xml originale:

<?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>

Per saperne di più, consulta la documentazione di riferimento di index.yaml.

queue.yaml

Crea un file queue.yaml con un oggetto queue contenente un elenco di oggetti, ognuno con campi che corrispondono a ciascuno degli attributi del tag <queue> nel file queue.xml, come mostrato di seguito.

File queue.yaml convertito:

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

File queue.xml originale:

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