Como migrar para o SDK do Cloud

A partir de 30 de julho de 2019, o uso do SDK independente do App Engine será suspenso. Ele ficará indisponível para download a partir de 30 de julho de 2020. A tabela a seguir lista os recursos obsoletos e as alternativas recomendadas:

Obsoleto Ação recomendada
SDK independente do App Engine Fazer download do SDK do Cloud.
Comandos appcfg Migre do AppCfg para a linha de comando do gcloud.
Comandos dev_appserver.sh Para desenvolvimento local, execute o comando java_dev_appserver.sh no diretório bin do SDK do Cloud.
Plug-in Java baseado no SDK do App Engine para Maven (com.google.appengine.appengine-maven) Migre para o plug-in Maven baseado no SDK do Cloud.
Plug-in Java baseado no SDK do App Engine para Gradle (com.google.appengine.appengine-gradle) Migre para o plug-in Gradle baseado no SDK do Cloud.
Formatos de arquivo cron.xml, datastore-index.xml, dispatch.xml e queue.xml Migre automaticamente usando a ferramenta gcloud beta app migrate-config ou migre os arquivos xml para yaml manualmente.

Cronograma de migração

30 de julho de 2019: o uso das ferramentas com base no SDK independente do App Engine foi suspenso.

30 de julho de 2020: o SDK independente do App Engine não estará disponível para download e poderá não funcionar, se usado.

30 de julho de 2020: o Google encerrará e removerá o suporte ao SDK independente do App Engine.

Recursos não compatíveis com versões anteriores

Devido à suspensão de uso da ferramenta appcfg e do SDK independente do App Engine, no momento os recursos a seguir não são compatíveis com o SDK do Cloud:

Como migrar formatos de arquivo XML para YAML

O SDK do Cloud não é compatível com os formatos de arquivo a seguir:

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

Os exemplos a seguir demonstram como migrar seus arquivos xml para yaml.

Como migrar arquivos automaticamente

Para migrar arquivos xml automaticamente:

  1. É preciso ter o SDK do Cloud versão 226.0.0 ou posterior. Se quiser atualizar para a versão mais recente:

    gcloud components update
    
  2. Para cada arquivo que você quiser migrar, especifique um dos subcomandos a seguir: (cron-xml-to-yaml, datastore-indexes-xml-to-yaml, dispatch-xml-to-yaml, queue-xml-to-yaml) e o nome do arquivo:

    gcloud beta app migrate-config queue-xml-to-yaml MY-QUEUE-XML-FILE.xml
    
  3. Verifique mais uma vez manualmente o arquivo convertido antes de implantar no ambiente de produção.

    Para uma conversão de arquivo bem-sucedida de xml para yaml, consulte as guias Como migrar arquivos manualmente.

Como migrar arquivos manualmente

Para migrar manualmente arquivos xml para yaml:

cron.yaml

Crie um arquivo cron.yaml com um objeto cron contendo uma lista de objetos, cada um com campos que correspondam a cada um dos atributos de tag <cron> em seu arquivo cron.xml, como mostrado abaixo.

Arquivo cron.yaml convertido:

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'

Arquivo cron.xml original:

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

Para mais informações, consulte a documentação da referência do cron.yaml.

dispatch.yaml

Crie um arquivo dispatch.yaml com um objeto dispatch contendo uma lista de objetos, cada um com campos que correspondam a cada um dos atributos de tag <dispatch> em seu arquivo dispatch.xml, conforme mostrado abaixo.

Arquivo dispatch.yaml convertido:

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

Arquivo dispatch.xml original

<?xml version="1.0" encoding="UTF-8"?>
<dispatch-entries>
  <dispatch>
      <url>*/favicon.ico</url>
      <module>default</module>
  </dispatch>
  <dispatch>
      <url>simple-sample.appspot.com/</url>
      <module>default</module>
  </dispatch>
  <dispatch>
      <url>*/mobile/*</url>
      <module>mobile-frontend</module>
  </dispatch>
</dispatch-entries>

Para mais informações, consulte a documentação de referência do dispatch.yaml.

index.yaml

Crie um arquivo index.yaml com um objeto indexes contendo uma lista de objetos, cada um com campos que correspondam a cada um dos atributos de tag <datastore-index> em seu arquivo datastore-indexes.xml, conforme mostrado abaixo.

Arquivo index.yaml convertido:

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

Arquivo datastore-index.xml original:

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

Para mais informações, consulte a documentação de referência do index.yaml.

queue.yaml

Crie um arquivo queue.yaml com um objeto queue contendo uma lista de objetos, cada um com campos que correspondam a cada um dos atributos de tag <queue> em seu arquivo queue.xml, conforme mostrado abaixo.

Arquivo queue.yaml convertido:

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

Arquivo queue.xml original:

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