gcloud CLI로 마이그레이션

독립형 App Engine SDK는 2019년 7월 30일부터 지원 중단되었으며 현재 종료되었습니다. 다음 표에는 기능과 권장 옵션이 나열되어 있습니다.

지원 중단됨 권장 작업
독립형 App Engine SDK Google Cloud CLI 다운로드
App Engine SDK를 사용하여 App Engine 기존 API에 액세스합니다. 함께 제공되지 않는 Google Cloud 또는 타사 서비스로 마이그레이션하거나 2세대 런타임을 사용하는 경우 App Engine 서비스 SDK를 사용하여 번들 서비스에 액세스합니다.
appcfg 명령어 AppCfg에서 gcloud 명령줄로 마이그레이션
dev_appserver.sh 명령어 로컬 개발의 경우 gcloud CLI의 bin 디렉터리에서 java_dev_appserver.sh 명령어를 실행합니다.
Maven용 자바 App Engine SDK 기반 플러그인(com.google.appengine.appengine-maven) gcloud CLI 기반 Maven 플러그인으로 마이그레이션
Gradle용 자바 App Engine SDK 기반 플러그인(com.google.appengine.appengine-gradle) gcloud CLI 기반 Gradle 플러그인으로 마이그레이션
cron.xml, datastore-index.xml, dispatch.xmlqueue.xml 파일 형식 gcloud beta app migrate-config 도구를 사용하여 자동으로 마이그레이션하거나 수동으로 xmlyaml 파일로 마이그레이션합니다.

마이그레이션 일정

2019년 7월 30일: 독립형 App Engine SDK 기반 도구 지원이 중단됩니다.

2020년 8월 30일: 독립형 App Engine SDK를 다운로드할 수 없으며 사용 중인 경우에는 더 이상 작동하지 않을 수 있습니다.

2020년 8월 30일: Google은 독립형 App Engine SDK에 대한 지원을 종료하고 삭제했습니다.

이전 버전과 호환되지 않는 기능

appcfg 도구와 독립형 App Engine SDK가 종료되어 현재 gcloud CLI에서는 다음 기능이 지원되지 않습니다.

  • AppCfg로 애플리케이션 파일 다운로드

XML 파일 형식을 YAML 파일 형식으로 마이그레이션

gcloud CLI는 다음 파일 형식을 지원하지 않습니다.

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

다음 예시는 xml 파일을 yaml 파일로 마이그레이션하는 방법을 보여줍니다.

자동으로 파일 마이그레이션

xml 파일을 자동으로 마이그레이션하려면 다음을 수행합니다.

  1. gcloud CLI 버전 226.0.0 이상이 있어야 합니다. 최신 버전으로 업데이트하려면 다음을 실행합니다.

    gcloud components update
    
  2. 마이그레이션하려는 각 파일에 cron-xml-to-yaml, datastore-indexes-xml-to-yaml, dispatch-xml-to-yaml, queue-xml-to-yaml 하위 명령 중 하나와 파일 이름을 지정합니다.

    gcloud beta app migrate-config queue-xml-to-yaml MY-QUEUE-XML-FILE.xml
    
  3. 프로덕션에 배포하기 전에 변환된 파일을 수동으로 다시 확인합니다.

    샘플 xml 파일을 yaml 파일로 성공적으로 변환하려면 수동으로 파일 마이그레이션 탭을 참조하세요.

수동으로 파일 마이그레이션

xml 파일을 yaml 파일로 수동으로 마이그레이션하려면 다음을 수행합니다.

cron.yaml

아래 나온 것처럼 cron.yaml 파일의 각 <cron> 태그 속성에 해당하는 필드가 각각 있는 객체 목록이 포함된 cron 객체로 cron.xml 파일을 만듭니다.

전환된 cron.yaml 파일:

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'

원본 cron.xml 파일:

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

자세한 내용은 cron.yaml 참조 문서를 확인하세요.

dispatch.yaml

아래 나온 것처럼 dispatch.yaml 파일의 각 <dispatch> 태그 속성에 해당하는 필드가 각각 있는 객체 목록이 포함된 dispatch 객체로 dispatch.xml 파일을 만듭니다.

전환된 dispatch.yaml 파일:

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

원본 dispatch.xml 파일:

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

자세한 내용은 dispatch.yaml 참조 문서를 확인하세요.

index.yaml

아래 나온 것처럼 index.yaml 파일의 각 <datastore-index> 태그 속성에 해당하는 필드가 각각 있는 객체 목록이 포함된 indexes 객체로 datastore-indexes.xml 파일을 만듭니다.

전환된 index.yaml 파일:

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

원본 datastore-index.xml 파일:

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

자세한 내용은 index.yaml 참조 문서를 확인하세요.

queue.yaml

아래 나온 것처럼 queue.yaml 파일의 각 <queue> 태그 속성에 해당하는 필드가 각각 있는 객체 목록이 포함된 queue 객체로 queue.xml 파일을 만듭니다.

전환된 queue.yaml 파일:

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

원본 queue.xml 파일:

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