Cloud Tasks 큐에 태스크 추가
이 빠른 시작에서는 Cloud Tasks API를 통해 Cloud Tasks 큐를 사용하여 기본 작업을 수행할 수 있습니다.
이 빠른 시작의 샘플은 App Engine 핸들러를 대상으로 하므로 App Engine 앱을 배포해야 합니다. App Engine을 대상으로 사용하지 않는 경우에는 App Engine 앱을 배포할 필요가 없으며 기존 App Engine 앱을 중지하면 됩니다.
예를 들어 HTTP Target 핸들러를 배타적으로 사용하는 경우 App Engine 앱이 필요하지 않습니다. 일반 HTTP Target의 경우 Cloud Tasks 서비스는 태스크 구성 방식에 따라 일반 HTTP 엔드포인트에 있는 작업자에게 태스크 요청을 전달합니다. HTTP 대상 사용에 대한 자세한 내용은 HTTP 대상 태스크 만들기를 참조하세요.
시작하기 전에
이 빠른 시작을 위해 Cloud 환경을 설정하려면 Google Cloud 프로젝트를 만들고 결제가 사용 설정된 App Engine 애플리케이션을 추가합니다. Google Cloud 프로젝트를 만들 때 결제 계정이 있으면 결제가 자동으로 사용 설정됩니다.Google Cloud 프로젝트, App Engine 애플리케이션, 결제 관리에 대해 자세히 알아보세요.
- Google Cloud 프로젝트를 만들거나 선택합니다.
App Engine 페이지로 이동 - 오른쪽 상단의 버튼을 사용하여 기존 프로젝트 이름을 선택하거나 새로 만듭니다.
- 왼쪽 상단의 드롭다운 상자에 프로젝트 ID를 기록하세요. 이것은 Cloud Tasks 요청의 매개변수로 사용됩니다.
- App Engine 애플리케이션을 프로젝트에 추가합니다.
- App Engine 시작하기 페이지에서 애플리케이션 만들기를 클릭합니다.
- 애플리케이션의 리전을 선택합니다.
이 위치는 Cloud Tasks 요청의 LOCATION_ID 매개변수로 사용되므로 기록해 두세요. 두 위치는 App Engine 명령어에서는
europe-west
및us-central
로, Cloud Tasks 명령어에서는europe-west1
및us-central1
로 각각 호출됩니다. - 시작하기 페이지에서 다음을 클릭합니다. 이 부분은 나중에 처리합니다. 새 프로젝트인 경우 실행 환경이 빌드됩니다.
- 결제 사용 설정 팝업이 나타나면 결제 계정을 선택합니다. 현재 결제 계정이 없는 경우 결제 계정 만들기를 클릭하고 마법사의 안내에 따릅니다.
- 다음 단계 페이지에서 나중에 하기를 클릭합니다. 나중에 샘플에 액세스하여 SDK를 다운로드합니다.
- Cloud Tasks API를 사용 설정합니다.
Cloud Tasks API 페이지로 이동 - API 인증을 설정합니다.
- 안내에 따라 서비스 계정을 만듭니다. 계정과 연결된 JSON 키가 있는 파일을 다운로드하여 로컬에 저장합니다. 서비스 계정 키는 프로그래매틱 방식으로 Google Cloud에 액세스하도록 로컬 코드를 승인합니다.
- 샘플은 Google Cloud 클라이언트 라이브러리를 사용하여 App Engine과 상호작용하므로 환경 변수를 위에서 다운로드한 키를 가리키도록 설정해야 합니다. 이 키는 라이브러리에서 요청을 인증하는 데 사용됩니다. 클라이언트 라이브러리를 사용하지 않고도 요청을 만들 수 있지만 클라이언트 라이브러리가 인증을 포함해 서버와의 하위 수준 통신의 세부정보를 관리하는 데 도움이 될 수 있습니다.
- gcloud CLI를 설치하고 설정합니다. 그러면
gcloud
도구에 액세스할 수 있습니다.
샘플 설정
이 샘플은 Cloud Tasks API를 통해 Cloud Tasks 큐에 태스크를 추가할 수 있는 프레임워크를 제공합니다.
C#
C# 샘플은 두 개의 앱으로 구성되어 있습니다. 하나(CreateAppEngineTask
)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(CloudTasks
)는 App Engine 가변형 환경에 태스크를 '처리'하기 위한 작업자로 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
.NET Core SDK 버전 2.0 이상이 설치되어 있는지 확인합니다.
gcloud
도구를 초기화하고 위에서 만든 Google Cloud 프로젝트를 사용하도록 구성했는지 확인합니다.샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
CreateTask
에 대한 샘플 코드가 있는 디렉터리로 이동합니다.cd dotnet-docs-samples/cloudtasks/api/TasksSample/
모든 종속 항목을 설치합니다.
dotnet restore
CloudTasks
에 대한 샘플 코드가 포함된 디렉터리(dotnet-docs-samples/cloudtasks/appengine/
)로 이동하여 모든 종속 항목을 설치합니다.dotnet restore
애플리케이션을 컴파일하고 배포를 준비합니다.
dotnet publish
작업자 서비스(
CloudTasks
CloudTasks)를 App Engine 가변형 환경에 배포합니다.gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
색인 페이지가 작동하는지 확인합니다.
gcloud app browse
브라우저에
https://{YOUR_PROJECT_ID}.appspot.com/
이 열리고Hello, World!
가 표시됩니다.
Python
Python 샘플 앱은 두 개의 파일로 구성되어 있습니다. 하나(create_app_engine_queue_tasks.py
)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(main.py
)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
샘플 코드가 있는 디렉터리로 이동합니다.
cd python-docs-samples/appengine/flexible_python37_and_earlier/tasks/
모든 종속 항목을 설치합니다.
pip install -r requirements.txt
gcloud
도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.작업자 서비스 (
main.py
)를 App Engine에 배포합니다.gcloud app deploy
색인 페이지가 작동하는지 확인합니다.
gcloud app browse
브라우저에
https://{YOUR_PROJECT_ID}.appspot.com/
이 열리고Hello, World!
가 표시됩니다.
자바
이 자바 11 예시에서는 애플리케이션 두 개를 사용합니다.
tasks
앱은 로컬에서 명령줄 도구로 실행되어 태스크를 만들고 큐에 추가합니다.tasks-handler
스프링 부팅 앱은 태스크 요청을 수신하는 엔드포인트 역할을 하여 Cloud Tasks 요청을 작업자로 처리합니다. 기본적으로 배포하는 App Engine 앱입니다.
샘플 앱을 배포하는 명령어는 다음과 같습니다.
- 자바 SE 11 개발 키트(JDK)를 다운로드하여 설치합니다.
- Cloud Tasks 설정 안내를 완료합니다.
- Maven을 다운로드 및 설치하여 앱을 빌드, 배포, 관리합니다.
- gcloud CLI를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성합니다.
gcloud CLI
app-engine-java
구성요소를 설치합니다.gcloud components install app-engine-java
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
또는 ZIP 파일로 샘플을 다운로드하고 압축을 풉니다.tasks-handler
앱의 최상위 디렉터리로 이동합니다.cd java-docs-samples/appengine-java11/tasks-handler/
App Engine에
tasks-handler
앱을 배포합니다.mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
PROJECT_ID를 Google Cloud 프로젝트의 ID로 바꿉니다.
pom.xml
파일에 이미 프로젝트 ID가 지정된 경우 실행할 명령어에-Dapp.deploy.projectId
속성을 포함하지 않아도 됩니다.
PHP
PHP 샘플은 두 개의 파일로 구성되어 있습니다. 하나(/snippets/src/create_task.php
)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(/apps/handler/index.php
)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Tasks 샘플의 최상위 디렉터리로 이동합니다.
cd php-docs-samples/appengine/standard/tasks
tasks
디렉터리에 두 개의 하위 디렉터리가 표시됩니다.apps/handler
: App Engine에 배포할 작업자 서비스의 코드 포함snippets
: 로컬 명령줄 도구용 코드 포함
Composer가 설치되어 있는지 확인합니다. 로컬에서 사용하려면 두 하위 디렉터리 모두에
composer.phar
가 있어야 합니다. 로컬 및 전역에서 실행을 비교하는 내용은 Composer 문서를 참조하세요.snippets
디렉터리에 모든 종속 항목을 설치합니다.composer install
로컬 전용이면 다음 명령어를 실행합니다.php composer.phar install
apps/handler
디렉터리에 모든 종속 항목을 설치합니다.composer install
로컬 전용이면 다음 명령어를 실행합니다.php composer.phar install
gcloud
도구를 초기화하고 위에서 만든 Google Cloud 프로젝트를 사용하도록 구성했는지 확인합니다.apps/handler
디렉터리에서gcloud app deploy
명령어를 사용하여 App Engine에 작업자 서비스를 배포합니다.gcloud app deploy
서비스가 포함된 앱이 실행 중인지 확인합니다.
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에 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
gcloud
App Engine Go 구성요소를 설치했는지 확인합니다.gcloud components install app-engine-go
gcloud
도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
작업자 샘플 코드의
tasks/handle_task
디렉터리로 이동합니다.cd golang-samples/appengine/go11x/tasks/handle_task
필수 구성 정보를 포함하는
app.yaml
파일이 있는지 확인합니다.작업자 서비스 (
handle_task.go
)를 App Engine에 배포합니다.gcloud app deploy
서비스가 포함된 앱이 실행 중인지 확인합니다.
gcloud app browse
브라우저에
https://{YOUR_PROJECT_ID}.appspot.com/
이 열리고Hello, World!
가 표시됩니다.
Node.js
Node.js 샘플은 두 개의 파일로 구성되어 있습니다. 하나(createTask.js
)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(server.js
)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
샘플 코드가 있는 디렉터리로 이동합니다.
cd nodejs-docs-samples/cloud-tasks/snippets
모든 종속 항목을 설치합니다.
npm을 사용할 수 있습니다.
npm install
또는 yarn을 사용할 수 있습니다.yarn install
gcloud
도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.작업자 서비스(
server.js
)를 App Engine 표준 환경에 배포합니다.gcloud app deploy app.yaml
서비스가 포함된 앱이 실행 중인지 확인합니다.
gcloud app browse
브라우저에
https://{YOUR_PROJECT_ID}.appspot.com/
이 열리고Hello, World!
가 표시됩니다.
Ruby
Ruby 샘플은 두 개의 파일로 구성되어 있습니다. 하나(create_Task.rb
)는 명령줄 도구로 로컬에서 실행하여 태스크를 만들고 큐에 태스크를 추가합니다. 다른 하나(app.rb
)는 태스크를 '처리'하기 위한 작업자로 App Engine에 배포됩니다.
샘플을 다운로드하고 설치하려면 다음 단계를 따르세요.
샘플 애플리케이션 저장소를 로컬 머신에 클론합니다.
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
샘플 코드가 있는 디렉터리로 이동합니다.
cd ruby-docs-samples/appengine/cloud-tasks
종속 항목을 설치합니다.
bundle install
gcloud
도구를 초기화하고 위에서 만든 프로젝트를 사용하도록 구성했는지 확인합니다.작업자 서비스(
app.rb
)를 App Engine 가변 환경에 배포합니다.gcloud app deploy app.yaml
서비스가 포함된 앱이 실행 중인지 확인합니다.
gcloud app browse
브라우저에
https://{YOUR_PROJECT_ID}.appspot.com/
이 열리고Hello, World!
가 표시됩니다.
App Engine 태스크 핸들러를 만드는 방법에 대한 자세한 내용은 App Engine 태스크 핸들러 만들기를 참조하세요.
Cloud Tasks 큐 만들기
gcloud CLI gcloud
큐 관리 기능을 사용하여 위에서 준비한 환경에서 큐를 만듭니다.
명령줄에 다음을 입력합니다.
gcloud tasks queues create my-queue
큐가 초기화될 때까지 기다린 후
describe
를 사용하여 성공적으로 만들어졌는지 확인합니다.gcloud tasks queues describe my-queue
출력이 다음과 비슷한지 확인합니다.
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#
태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.
샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.
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
명령어를 사용하여 App Engine 앱의 위치 ID를 찾을 수 있습니다.gcloud tasks locations list
TasksSample
폴더로 이동합니다.cd ../api/TasksSample
test
를 사용하여 태스크를 만들고 페이로드('hello' 문자열)을 추가합니다. 이전에 배포한CloudTasks
앱에는 페이로드를 로깅하여 처리하는 엔드포인트log_payload
가 있습니다.dotnet test
로그를 확인하여 태스크에서 엔드포인트를 조회하는지 확인합니다.
gcloud app logs read
Python
작업을 로컬에 만들어서 설정한 큐에 추가한 다음 해당 작업을 비동기 작업자에게 전달합니다.
샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.
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
로컬
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
페이로드가 수신되었는지 확인합니다.
gcloud app logs read
자바
태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.
appengine-java11/tasks
디렉터리로 이동하여 앱을 컴파일합니다.cd ../tasks mvn package
머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이러한 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.
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
지정된 페이로드로 배포한 태스크 핸들러 컨트롤러의
/tasks/create
엔드포인트를 대상으로 태스크를 만듭니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다. 이 예시에서 페이로드는 샘플에 하드 코딩되었으므로 이를 지정할 필요가 없습니다.mvn exec:java -Dexec.mainClass="com.example.task.CreateTask"
태스크가 작업자에게 전달되고 작업자가 태스크를 처리하면 작업자는 Cloud Tasks 서비스에 2xx 성공 상태 코드를 반환하고 큐에서 태스크를 자동으로 삭제합니다.작업자 서비스 로그를 표시하여 태스크가 수신되었는지 확인합니다.
gcloud app logs read
PHP
태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.
snippets
디렉터리로 이동합니다.샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 샘플 앱은 이 변수를 사용하여 태스크를 큐에 추가하는 요청을 만듭니다.
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
로컬 스니펫
create_task.php
를 사용하여 태스크를 만들고hello
페이로드를 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
로그에서 페이로드를 수신했는지 확인합니다.
gcloud app logs read
Go
태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.
아직
tasks/handle_task
디렉터리에 있는 경우tasks/create_task
디렉터리로 이동합니다.샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.
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
hello
의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.
gcloud app logs read
Node.js
태스크를 로컬에 만들고 설정한 큐에 추가한 후 비동기 작업자에게 전달할 수 있습니다.
샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.
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
hello
의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.
gcloud app logs read
Ruby
태스크를 로컬에 만들어서 설정한 큐에 추가한 다음 해당 태스크를 비동기 작업자에게 전달합니다.
샘플 앱의 코드에서 수동으로 또는 별칭을 통해 머신에 다음 환경 변수를 설정합니다. 클라이언트는 이 정보를 사용하여 요청을 만듭니다.
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
hello
의 페이로드로 태스크를 만들어서 큐에 추가합니다. 페이로드는 작업자가 태스크 처리를 완료하는 데 필요한 요청의 모든 데이터가 될 수 있습니다.ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello
작업자 서비스 로그를 표시하여 페이로드가 수신되었는지 확인합니다.
gcloud app logs read
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
- Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
- 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
- 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.
다음 단계
Cloud Tasks 큐에 태스크를 추가했습니다. 계속해서 다음 페이지를 보고 Cloud Tasks를 알아보세요.
- 큐 및 태스크 관리를 사용하여 기존 태스크 및 큐를 삭제하는 등의 관리를 수행합니다.
- Cloud Tasks 큐 만들기 가이드에 따라 Cloud Tasks 큐를 만들고 구성하기
- gRPC API 참조에서 gRPC를 사용한 큐 관리에 대해 자세히 알아보기
- REST API 참조에서 REST를 사용한 큐 관리에 대해 자세히 알아보기
- Cloud Tasks 개요에서 Cloud Tasks 큐에 대해 자세히 알아보기