Admin API로 App Engine 애플리케이션 만들기

Google App Engine Admin API를 사용하여 새 Google Cloud Platform 프로젝트에서 프로그래매틱 방식으로 App Engine 애플리케이션을 만드세요. Admin API와 Cloud Resource Manager API를 함께 사용하면 GCP 프로젝트와 App Engine 애플리케이션을 프로그래매틱 방식으로 관리할 수 있습니다.

App Engine 애플리케이션을 만들면 지정한 위치에 대상 GCP 프로젝트용 Application 리소스가 생성됩니다.

GCP 프로젝트에서 직접 App Engine 애플리케이션을 만들려면 표준 환경 또는 가변형 환경에서 언어에 맞는 프로젝트, 애플리케이션, 결제 관리 주제를 참조하세요.

시작하기 전에

Admin API를 사용하여 App Engine 애플리케이션을 만들려면 다음 필수 조건을 먼저 충족해야 합니다.

  • GCP 프로젝트를 만들거나 기존 프로젝트가 있어야 합니다.
  • 대상 GCP 프로젝트의 소유자여야 합니다.
  • Admin API에 액세스할 수 있어야 합니다.

다른 사용자 계정이 App Engine 애플리케이션에서 태스크를 수행하려면 GCP 프로젝트 소유자가 먼저 Application 리소스를 만들어야 합니다. 예를 들어 App Engine 애플리케이션을 먼저 만들어야 App Engine 배포자 역할을 가진 사용자 계정이 서비스 계정을 사용하여 앱을 배포할 수 있습니다.

GCP 프로젝트를 만들려면 다음 안내를 따르세요.

API

GCP 프로젝트를 프로그래매틱 방식으로 만들려면 Cloud Resource Manager API를 사용하면 됩니다. 자세한 내용은 새 프로젝트 만들기를 참조하세요. 간단한 예를 참조하세요.

콘솔

GCP 콘솔을 사용하여 GCP 프로젝트를 만들려면 다음 안내를 따르세요.

프로젝트 페이지로 이동

gcloud

Google Cloud SDK를 설치한 후 gcloud 도구의 다음 명령어를 실행하여 GCP 프로젝트를 만들 수 있습니다.

gcloud projects create

기존 GCP 프로젝트를 사용하는 경우, 프로젝트는 App Engine 애플리케이션 한 개만 지원하므로 프로젝트에 Application 리소스가 포함되어 있지 않아야 합니다. GCP 프로젝트에 Application 리소스가 포함되어 있는지 확인하려면 apps.get 메서드를 사용하거나 gcloud app describe 명령어를 실행하면 됩니다.

App Engine 애플리케이션 만들기

Admin API로 App Engine 애플리케이션을 만들려면 다음 안내를 따르세요.

  1. HTTP 요청을 승인합니다(예: 액세스 토큰 확보).

    Admin API에 대한 액세스 권한 부여는 API 앱의 요구사항에 따라 서로 다른 OAuth 흐름을 사용하여 이루어집니다. 자세한 내용은 API 액세스를 참조하세요.

  2. 액세스 토큰과 Admin API를 사용하여 HTTP POST 요청을 보내 App Engine 애플리케이션을 만듭니다.

    HTTP POST 요청에서 Application 리소스와 대상 GCP 프로젝트를 정의합니다. 예를 들면 다음과 같습니다.

    POST https://appengine.googleapis.com/v1/apps { "id": "[MY_PROJECT_ID]", "locationId": "[MY_APP_LOCATION]" }
    

    필수 HTTP 요청 필드:

    • id: App Engine 애플리케이션을 만들려는 대상 GCP 프로젝트의 프로젝트 ID입니다.

    • locationId: App Engine 애플리케이션이 위치한 리전의 이름으로, App Engine 위치에 나열되어 있습니다(예: us-east1).

      apps.locations.list 메서드를 사용하여 지원되는 위치의 전체 목록을 확인할 수 있습니다.

      예: API 탐색기에서 요청 예를 승인 및 실행하여 지원되는 위치의 현재 목록을 확인합니다.

    필드 옵션의 전체 목록은 Application 리소스를 참조하세요.

    cURL 명령어의 예:

    curl -X POST -d "{ 'id': '[MY_PROJECT_ID]', 'locationId': '[MY_APP_LOCATION]' }" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps
    

    각 항목의 의미는 다음과 같습니다.

    • [MY_PROJECT_ID]는 App Engine 애플리케이션을 만들려는 대상 프로젝트의 ID입니다.
    • [MY_APP_LOCATION]은 App Engine 애플리케이션을 만들려는 위치입니다.
    • [MY_ACCESS_TOKEN]은 HTTP 요청을 승인하기 위해 받은 액세스 토큰입니다.

    응답 예:

    {
      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
      "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "method": "google.appengine.v1.Applications.CreateApplication",
        "insertTime": "2016-10-03T20:48:02.099Z",
        "user": "me@example.com",
        "target": "apps/[MY_PROJECT_ID]"
      }
    }
    
  3. App Engine 애플리케이션이 만들어졌는지 확인합니다.

    1. 실제 생성 작업의 상태를 확인합니다.

      이전 단계에서 사용한 HTTP POST 요청은 name 필드에 작업 이름을 반환하고, apps.operations 컬렉션GET 메서드와 함께 사용하면 생성 작업 상태를 확인할 수 있습니다.

      예를 들어 응답의 name 필드가 다음과 같은 경우:

      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f"
      

      다음 HTTP GET 요청을 보냅니다.

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      cURL 명령어의 예:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      여기서 [MY_ACCESS_TOKEN]은 액세스 토큰이며 [MY_PROJECT_ID]는 대상 프로젝트의 ID입니다.

      응답 예:

      {
        "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
        "metadata": {
          "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
          "method": "google.appengine.v1.Applications.CreateApplication",
          "insertTime": "2016-10-03T20:48:02.099Z",
          "endTime": "2016-10-03T20:48:18.272Z",
          "user": "me@example.com",
          "target": "apps/[MY_PROJECT_ID]"
        },
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.appengine.v1.Application",
          "id": "[MY_PROJECT_ID]",
          "locationId": "[MY_APP_LOCATION]"
        }
      }
      
    2. App Engine 애플리케이션이 프로젝트에 만들어졌는지 확인합니다.

      버전의 세부정보를 확인하려면 apps 컬렉션GET 메서드를 사용합니다. 배포한 프로젝트를 HTTP GET 요청에 지정해야 합니다. 예를 들면 다음과 같습니다.

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]
      

      cURL 명령어의 예:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/
      

      여기서 [MY_ACCESS_TOKEN]은 액세스 토큰이며 [MY_PROJECT_ID]는 대상 프로젝트의 ID입니다.

      응답 예:

      {
        "name": "apps/[MY_PROJECT_ID]",
        "id": "[MY_PROJECT_ID]",
        "authDomain": "gmail.com",
        "locationId": "us-central",
        "defaultHostname": "[MY_PROJECT_ID].appspot.com",
        "defaultBucket": "[MY_PROJECT_ID].appspot.com"
      }
      

다음 단계