Cloud Tasks 큐 빠른 시작

다음 안내를 따라 Cloud Tasks API를 통해 다음과 같은 Cloud Tasks 큐를 사용하는 기본 작업을 수행할 수 있습니다.

  1. 시작하기 전에 (환경 설정)
  2. 샘플 코드 설정
  3. 큐 만들기
  4. 태스크를 만들고 큐에 추가
  5. 리소스 삭제

시작하기 전에

클라우드 환경을 설정하려면 GCP 프로젝트를 만들고 결제가 사용 설정된 App Engine 애플리케이션을 추가합니다. 큐를 실행하려면 프로젝트에 App Engine 애플리케이션이 사용 설정되어 있어야 합니다. GCP 프로젝트, App Engine 애플리케이션, 일반 결제에 대한 자세한 내용은 여기를 참조하세요.

  1. GCP 프로젝트를 만들거나 선택합니다.
    App Engine 페이지로 이동
    1. 오른쪽 상단의 버튼을 사용하여 기존 프로젝트 이름을 선택하거나 새 프로젝트 이름을 만듭니다.
    2. 왼쪽 상단의 드롭다운 상자에 프로젝트 ID를 기록하세요. 이것은 Cloud Tasks 요청의 매개변수로 사용됩니다.
  2. App Engine 애플리케이션을 프로젝트에 추가합니다.
    1. App Engine 시작하기 페이지에서 애플리케이션 만들기를 클릭합니다.
    2. 애플리케이션의 리전을 선택합니다. 이 위치는 Cloud Tasks 요청의 LOCATION_ID 매개변수로 사용되므로 기록해 두세요. 두 위치는 App Engine 명령어에서는 europe-westus-central로, Cloud Tasks 명령어에서는 europe-west1us-central1로 각각 호출됩니다.
    3. 시작하기 페이지에서 다음을 클릭합니다. 이 부분은 나중에 처리합니다. 새 프로젝트인 경우 백엔드가 작성됩니다.
    4. 결제 사용 설정 팝업이 나타나면 결제 계정을 선택합니다. 현재 결제 계정이 없는 경우 결제 계정 만들기를 클릭하고 마법사의 안내에 따릅니다.
    5. 다음 단계 페이지에서 나중에 하기를 클릭합니다. 샘플에 액세스하여 나중에 SDK를 다운로드합니다.

  3. Cloud Tasks API를 사용 설정합니다.
    Cloud Tasks API 페이지로 이동
  4. API 인증을 설정합니다.
    1. 안내에 따라 서비스 계정을 만듭니다. 계정과 연결된 JSON 키가 있는 파일을 다운로드하여 로컬에 저장합니다. 서비스 계정을 사용하면 프로그래매틱 방식으로 Google Cloud에 인증할 수 있습니다.
    2. 샘플은 Google Cloud 클라이언트 라이브러리를 사용하여 App Engine과 상호작용하므로 환경 변수를 위에서 다운로드한 키를 가리키도록 설정해야 합니다. 이 키는 라이브러리에서 요청을 인증하는 데 사용됩니다. 클라이언트 라이브러리를 사용하지 않고도 요청을 만들 수 있지만 클라이언트 라이브러리가 인증을 포함해 서버와의 하위 수준 통신의 세부정보를 관리하는 데 도움이 될 수 있습니다.
  5. Cloud SDK를 설치하고 설정합니다. 그러면 gcloud 도구에 액세스할 수 있습니다.

샘플 설정

이 샘플은 Cloud Tasks API를 통해 Cloud Tasks 큐에 태스크를 추가할 수 있는 프레임워크를 제공합니다.

C#

C# 샘플은 두 개의 앱으로 구성되어 있습니다. 하나(CreateAppEngineTask)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(CloudTasks)는 App Engine 가변형 환경에 태스크를 '처리'하기 위한 작업자로 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. .NET Core SDK 버전 2.0 이상이 설치되어 있는지 확인합니다.

  2. gcloud 도구를 초기화하고 위에서 만든 GCP 프로젝트를 사용하도록 구성했는지 확인합니다.

  3. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples

  4. CreateTask에 대한 샘플 코드가 있는 디렉터리로 이동합니다.

    cd dotnet-docs-samples/cloudtasks/api/TasksSample/

  5. 종속 항목을 설치합니다.

    dotnet restore

  6. CloudTasks에 대한 샘플 코드가 포함된 디렉터리(dotnet-docs-samples/cloudtasks/appengine/)로 이동하여 모든 종속 항목을 설치합니다.

    dotnet restore

  7. 애플리케이션을 컴파일하고 배포를 준비합니다.

    dotnet publish

  8. 작업자 서비스(CloudTasksCloudTasks)를 App Engine 가변형 환경에 배포합니다.

    gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml

  9. 색인 페이지가 작동하는지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

Python

Python 샘플 앱은 두 개의 파일로 구성되어 있습니다. 하나(create_app_engine_queue_tasks.py)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(main.py)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

  2. 샘플 코드가 있는 디렉토리로 이동합니다.

    cd python-docs-samples/appengine/flexible/tasks/

  3. 종속 항목을 설치합니다.

    pip install -r requirements.txt

  4. gcloud 도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.

  5. 작업자 서비스 (main.py)를 App Engine에 배포합니다.

    gcloud app deploy

  6. 색인 페이지가 작동하는지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

자바

자바 8 샘플 앱은 두 개의 파일로 구성되어 있습니다. 하나(CreateTask.java)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(TaskServlet.java)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다. 자바 11을 사용하여 샘플을 실행하려면 자바 11 비동기식 코드 실행을 참조하세요.

참고: 자바 샘플 앱을 사용하려면 다음과 같은 추가 구성요소도 있어야 합니다.

  • 전문가
  • Cloud SDK용 app-engine-java 구성요소
  • 제공된 샘플 pom.xml 파일에 이미 지정된 App Engine Maven 플러그인

이러한 구성요소에 대한 자세한 내용은 Apache Maven 및 App Engine 플러그인 사용Maven 플러그인 목표 및 매개변수를 참조하세요.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git

  2. Tasks 샘플의 최상위 디렉토리로 이동합니다.

    cd java-docs-samples/appengine-java8/tasks/quickstart/

  3. gcloud 도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.

  4. 로컬 명령줄 도구(CreateTask.java)를 빌드하고 실행합니다.

    mvn appengine:run

  5. 작업자 서비스 (TaskServlet.java)를 App Engine에 배포합니다.

    mvn appengine:deploy

PHP

PHP 샘플은 두 개의 파일로 구성되어 있습니다. 하나(/snippets/src/create_task.php)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(/apps/handler/index.php)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/php-docs-samples

  2. Tasks 샘플의 최상위 디렉토리로 이동합니다.

    cd php-docs-samples/appengine/php72/tasks

    tasks 디렉터리에 두 개의 하위 디렉터리가 표시됩니다.

    • apps/handler: App Engine에 배포할 작업자 서비스의 코드 포함
    • snippets: 로컬 명령줄 도구용 코드 포함
  3. Composer가 설치되어 있는지 확인합니다. 로컬에서 사용하려면 두 하위 디렉터리 모두에 composer.phar가 있어야 합니다. 로컬 및 전역에서 실행을 비교하는 내용은 Composer 문서를 참조하세요.

  4. snippets 디렉토리에 모든 종속 항목을 설치합니다.

    composer install
    로컬 전용이면 다음 명령어를 실행합니다.
    php composer.phar install

  5. apps/handler 디렉토리에 모든 종속 항목을 설치합니다.

    composer install
    로컬 전용이면 다음 명령어를 실행합니다.
    php composer.phar install

  6. gcloud 도구를 초기화하고 위에서 만든 GCP 프로젝트를 사용하도록 구성했는지 확인합니다.

  7. apps/handler 디렉터리에서 gcloud app deploy 명령어를 사용하여 App Engine에 작업자 서비스를 배포합니다.

    gcloud app deploy

  8. 서비스가 포함된 앱이 실행 중인지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

Go

Golang 샘플은 두 개의 파일로 구성되어 있습니다. 하나(tasks/create_task/create_task.go)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(tasks/handle_task/handle_task.go)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. gcloud App Engine Go 구성요소를 설치했는지 확인합니다.

    gcloud components install app-engine-go

  2. gcloud 도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.

  3. 샘플 애플리케이션 저장소를 로컬 머신에 복사합니다.

    go get github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/tasks/...

  4. 작업자 샘플 코드의 tasks/handle_task 디렉토리로 이동합니다.

    cd golang-samples/appengine/go11x/tasks/handle_task

  5. 필수 구성 정보를 포함하는 app.yaml 파일이 있는지 확인합니다.

  6. 작업자 서비스 (handle_task.go)를 App Engine에 배포합니다.

    gcloud app deploy

  7. 서비스가 포함된 앱이 실행 중인지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

Node.js

Node.js 샘플은 두 개의 파일로 구성되어 있습니다. 하나(createTask.js)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(server.js)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/googleapis/nodejs-tasks.git

  2. 샘플 코드가 있는 디렉토리로 이동합니다.

    cd nodejs-tasks/samples

  3. 모든 종속 항목을 설치합니다.

    npm을 사용할 수 있습니다.

    npm install
    또는 yarn을 사용할 수 있습니다.
    yarn install

  4. gcloud 도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.

  5. 작업자 서비스(server.js)를 App Engine 표준 환경에 배포합니다.

    gcloud app deploy app.yaml

  6. 서비스가 포함된 앱이 실행 중인지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

Ruby

Ruby 샘플은 두 개의 파일로 구성되어 있습니다. 하나(create_Task.rb)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(app.rb)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다. 큐 자체는 App Engine에서 실행됩니다.

샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.

  1. 샘플 애플리케이션 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git

  2. 샘플 코드가 있는 디렉토리로 이동합니다.

    cd ruby-docs-samples/appengine/cloud-tasks

  3. 종속 항목을 설치합니다.

    bundle install

  4. gcloud 도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.

  5. 작업자 서비스(app.rb)를 App Engine 가변 환경에 배포합니다.

    gcloud app deploy app.yaml

  6. 서비스가 포함된 앱이 실행 중인지 확인합니다.

    gcloud app browse

    브라우저에 https://{YOUR_PROJECT_ID}.appspot.com/이 열리고 Hello, World!가 표시됩니다.

App Engine 태스크 핸들러를 만드는 방법에 대한 자세한 내용은 App Engine 태스크 핸들러 만들기를 참조하세요.

Cloud Tasks 큐 만들기

Cloud SDK gcloud 큐 관리 기능을 사용하면 위에서 준비한 환경에서 큐를 만들 수 있습니다.

  1. 명령줄에 다음을 입력합니다.

    gcloud tasks queues create my-queue

  2. 큐가 초기화될 때까지 기다린 후 describe를 사용하여 성공적으로 만들어졌는지 확인합니다.

    gcloud tasks queues describe my-queue

  3. 출력이 다음과 비슷한지 확인합니다.

    name: projects/[PROJECT_ID]/locations/[LOCATION_ID]/queues/my-appengine-queue // Note these ids
    rateLimits:
      maxBurstSize: 100
      maxConcurrentDispatches: 1000
      maxDispatchesPerSecond: 500.0
    retryConfig:
      maxAttempts: 100
      maxBackoff: 3600s
      maxDoublings: 16
      minBackoff: 0.100s
    state: RUNNING
    

Cloud Tasks 큐에 태스크 추가

C#

태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.

  1. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.

    export GOOGLE_PROJECT_ID=my-project-id // The project ID you set up above
    export GCP_QUEUE=my-queue // the queue you created above
    export LOCATION_ID=my-location-id // The region in which your queue is running

    다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.

    gcloud tasks locations list

  2. TasksSample 폴더로 이동합니다.

    cd ../api/TasksSample

  3. test를 사용하여 태스크를 만들고 페이로드('hello' 문자열)을 추가합니다. 이전에 배포한 CloudTasks 앱에는 페이로드를 로깅하여 처리하는 엔드포인트 log_payload가 있습니다.

    dotnet test

  4. 로그를 확인하여 태스크에서 엔드포인트를 조회하는지 확인합니다.

    gcloud app logs read

Python

작업을 로컬에 만들어서 설정한 대기열에 추가한 다음 해당 작업을 비동기 작업자에게 전달합니다.

  1. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.

    export PROJECT_ID=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  2. 로컬 create_app_engine_queue_task.py를 사용하여 태스크를 만들고 hello 페이로드를 추가합니다. 페이로드는 작업자가 태스크 처리 완료에 필요한 요청의 모든 데이터일 수 있습니다.

    python create_app_engine_queue_task.py --project=$PROJECT_ID
    --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello

  3. 페이로드가 수신되었는지 확인합니다.

    gcloud app logs read

자바

작업을 로컬에 만들어서 설정한 대기열에 추가한 다음 해당 작업을 비동기 작업자에게 전달합니다.

  1. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID // The project ID you set up above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  2. hello 페이로드로 배포한 서블릿의 /task/create 엔드포인트를 대상으로 하는 태스크를 만듭니다. 페이로드는 작업자가 태스크 처리 완료에 필요한 요청의 모든 데이터일 수 있습니다.

    mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
      -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT
      --queue $QUEUE_ID --location $LOCATION_ID --payload hello"
    

  3. 로그에서 페이로드를 수신했는지 확인합니다.

    gcloud app logs read

PHP

태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.

  1. snippets 디렉터리로 이동합니다.

  2. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.

    export PROJECT_ID=PROJECT_ID // The project ID from above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  3. 로컬 스니펫 create_task.php를 사용하여 태스크를 만들고 hello 페이로드를 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.

    php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
    

  4. 로그에서 페이로드를 수신했는지 확인합니다.

    gcloud app logs read

Go

태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.

  1. 아직 tasks/handle_task 디렉터리에 있는 경우 tasks/create_task 디렉터리로 이동합니다.

  2. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.

     export PROJECT_ID=PROJECT_ID // The project ID from above
     export LOCATION_ID=LOCATION_ID // The region in which your queue is running
     export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  3. hello의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.

    go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello 

  4. 작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.

    gcloud app logs read

Node.js

태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.

  1. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.

    export PROJECT_ID=PROJECT_ID // The project ID from above
    export LOCATION_ID=LOCATION_ID // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  2. hello의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello 

  3. 작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.

    gcloud app logs read

Ruby

태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.

  1. 샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.

    export GOOGLE_CLOUD_PROJECT=my-project-id // The project ID from above
    export LOCATION_ID=my-location-id // The region in which your queue is running
    export QUEUE_ID=my-queue // The queue you created above
    참고: 다음 gcloud 명령어를 사용하여 위치 ID를 찾을 수 있습니다.
    gcloud tasks locations list

  2. hello의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.

    ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello

  3. 작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.

    gcloud app logs read

정리

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계