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 fazer o download em 30 de agosto de 2020. A tabela a seguir lista os recursos obsoletos e as alternativas recomendadas:

Obsoleto Ação recomendada
SDK independente do App Engine Fazer o download do SDK do Cloud.
commands appcfg Migrar do AppCfg à linha de comando do gcloud.
dev_appserver.sh commands Para desenvolvimento local, execute o comando java_dev_appserver.sh no diretório bin do Cloud SDK.
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 baseado em Java 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 seus 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 agosto de 2020: o SDK independente do App Engine não estará disponível para fazer o download e poderá não funcionar, se usado.

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

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

Como resultado da suspensão de uso da ferramenta appcfg e do SDK independente do App Engine, 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 seus 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ê quer migrar, especifique um dos seguintes subcomandos (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 amostra de conversão de arquivo xml em yaml, consulte as guias em Como migrar seus arquivos manualmente.

Como migrar arquivos manualmente

Para migrar manualmente seus arquivos xml para yaml:

cron.yaml

Crie um arquivo cron.yaml com um objeto cron que contenha uma lista de objetos, cada um com campos que correspondem a cada um dos atributos de tag <cron> no seu arquivo cron.xml, conforme 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 de referência do cron.yaml.

dispatch.yaml

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

Arquivo dispatch.yaml convertido:

dispatch:
- url: '*/favicon.ico'
  module: default
- url: 'simple-sample.uc.r.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.uc.r.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 correspondem a cada um dos atributos de tag <datastore-index> no 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 que contenha uma lista de objetos, cada um com campos que correspondem a cada um dos atributos de tag <queue> no 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>