Cloud Tasks를 사용하여 태스크라는 비동기 작업 항목을 만들 수 있습니다. 이 문서에서는 HTTP 타겟 작업과 App Engine 작업을 만드는 방법을 보여줍니다.
HTTP 대상 작업은 Cloud Run, Google Kubernetes Engine, Compute Engine 또는 온프레미스 웹 서버와 같은 외부 IP 주소가 있는 일반 HTTP 엔드포인트에 있는 작업자에게 전달되는 요청입니다.
App Engine 대상의 경우 Cloud Tasks는 App Engine 내의 핸들러로 태스크 요청을 전달합니다. App Engine 핸들러를 타겟팅하는 모든 큐에는 App Engine 앱이 있어야 합니다. 핸들러는 App Engine 앱이 실행되는 리전에서 실행되어야 합니다. 이 리전은 Cloud Tasks 요청의 REGION 매개변수로도 사용됩니다.
다음과 같은 방법으로 HTTP 타겟 작업을 만들 수 있습니다.
- Google Cloud 콘솔에서 다음을 수행합니다.
- 터미널 또는 Cloud Shell에서 Google Cloud CLI 사용
- Cloud Tasks API에 직접 요청을 전송하는 방법
프로그래매틱 방식으로 Cloud Tasks 큐에 HTTP 대상 태스크를 추가하는 방법을 알아보려면 프로그래매틱 방식으로 HTTP 대상 태스크 만들기를 참고하세요.
다음과 같은 방법으로 App Engine 작업을 만들 수 있습니다.
- 터미널 또는 Cloud Shell에서 Google Cloud CLI 사용
- Cloud Tasks API에 직접 요청을 전송하는 방법
프로그래매틱 방식으로 Cloud Tasks 대기열에 App Engine 태스크를 추가하는 방법을 알아보려면 프로그래매틱 방식으로 App Engine 태스크 만들기를 참고하세요.
시작하기 전에
Cloud Tasks 큐를 이미 만들었는지 확인합니다. 자세한 내용은 Cloud Tasks 큐 만들기를 참고하세요.
HTTP 대상 태스크 만들기
작업을 만들 때 작업 이름을 지정할 수 있습니다. 이름이 기존 작업 또는 최근에 삭제되거나 완료된 작업의 이름과 동일하면 호출이 실패합니다. 작업 이름을 지정하지 않으면 임의의 고유 작업 ID가 생성됩니다.
중복된 태스크 이름을 식별하는 추가 조회 비용이 있으므로 사용자 지정 ID로 생성된 태스크의 지연 시간이 크게 증가합니다. 태스크 ID 또는 태스크 ID의 접두사에 해시된 문자열을 사용하는 것이 좋습니다. 자세한 내용은 작업 중복 삭제를 참고하세요.
콘솔
Google Cloud 콘솔에서 Cloud Tasks > 대기열 페이지로 이동합니다.
태스크를 추가할 큐의 이름을 클릭합니다.
HTTP 태스크 만들기를 클릭합니다.
선택적으로 작업 이름을 지정합니다.
URL에 요청이 전송될 정규화된 URL을 지정합니다. 경로는
http://또는https://로 시작해야 합니다(예:https://www.example.com).필요한 경우 요청에 사용할 HTTP 메서드를 지정합니다. 기본값은
POST입니다.선택적으로 요청 본문에 작업을 처리하는 작업자에게 전송할 HTTP 본문 데이터를 제공합니다.
원하는 경우 헤더 추가를 클릭하여 HTTP 요청 헤더를 하나 이상 지정합니다.
인증 헤더에서 다음 인증 옵션 중 하나를 선택하여 태스크를 실행할 때 타겟에 전송된 요청이 인증되는 방식을 지정합니다.
- None: 승인이 없는 공개 엔드포인트의 경우 헤더가 없습니다.
- OAuth 토큰 추가: 일반적으로
*.googleapis.com에 호스팅된 Google API에 사용됩니다. - OIDC 토큰 추가:
*.googleapis.com에서 호스팅되는 Google API를 제외한 Google Cloud 및 서드 파티 엔드포인트 호출에 사용됩니다.
해당하는 경우 서비스 계정에 태스크를 실행할 때 타겟에 전송되는 요청에 포함된 승인 토큰을 생성하는 데 사용될 서비스 계정 이메일을 입력합니다. 서비스 계정은 대기열과 동일한 프로젝트에 있어야 합니다. 호출자에게 서비스 계정에 대한
iam.serviceAccounts.actAs권한이 있어야 합니다.선택적으로, 해당하는 경우 잠재고객을 지정하여 승인 토큰의 작업 유형 또는 수신자를 제한합니다.
만들기를 클릭합니다.
태스크가 큐 세부정보 페이지에 표시됩니다.
gcloud
HTTP 대상 태스크를 만들고 기존 큐에 추가하려면 gcloud tasks create-http-task 명령어를 사용합니다.
gcloud tasks create-http-task \
--queue=QUEUE_ID \
--url=URL \
--location=REGION \
--project=PROJECT_ID \
--oidc-service-account-email=SERVICE_ACCOUNT_EMAIL
다음을 바꿉니다.
QUEUE_ID: 작업을 추가할 대기열의 이름입니다.URL: 요청이 전송될 정규화된 URL입니다. 경로는http://또는https://로 시작해야 합니다(예:https://www.example.com).REGION: 선택사항입니다. 대기열이 배포된 리전입니다(예:us-central1).PROJECT_ID: 선택사항입니다. 작업이 생성될Google Cloud 프로젝트의 프로젝트 ID입니다.SERVICE_ACCOUNT_EMAIL: 선택사항입니다. 태스크를 실행할 때 타겟에 전송되는 요청에 포함된 승인 토큰을 생성하는 데 사용되는 서비스 계정 이메일입니다. 서비스 계정은 대기열과 동일한 프로젝트에 있어야 합니다. 호출자에게 서비스 계정에 대한iam.serviceAccounts.actAs권한이 있어야 합니다.OpenID Connect 토큰 대신 OAuth2 액세스 토큰을 생성하려면
--oidc-service-account-email플래그를--oauth-service-account-email로 바꿔 서비스 계정 이메일을 지정하세요.
작업을 만든 후 생성된 작업의 전체 리소스 이름이 포함된 확인 메시지가 표시됩니다.
REST
HTTP 대상 작업을 만들고 기존 대기열에 추가하려면 projects.locations.queues.tasks.create 메서드를 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID: 필수 항목입니다. 작업이 생성될 Google Cloud 프로젝트의 프로젝트 ID입니다.REGION: 필수 항목입니다. 대기열이 배포된 리전입니다(예:us-central1).QUEUE_ID: 필수 항목입니다. 작업이 추가될 대기열의 ID입니다.URL: 필수 항목입니다. 요청이 전송될 정규화된 URL입니다. 이 문자열은http://또는https://로 시작해야 합니다(예:https://www.example.com).SERVICE_ACCOUNT_EMAIL: 선택사항. 작업을 실행할 때 타겟으로 전송되는 요청에 포함된 승인 토큰을 생성하는 데 사용되는 서비스 계정 이메일입니다. 서비스 계정은 대기열과 동일한 프로젝트에 있어야 합니다. 호출자에게 서비스 계정에 대한iam.serviceAccounts.actAs권한이 있어야 합니다.OpenID Connect 토큰 대신 OAuth2 액세스 토큰을 생성하려면
oidcToken필드를oauthToken로 바꿔 서비스 계정 이메일을 지정하세요.SCHEDULE_TIME: 선택사항입니다. 작업이 시도되도록 예약된 시간입니다(RFC 3339 형식, 예:2026-10-02T15:01:23Z). 시간이 설정되지 않았거나 과거인 경우 Cloud Tasks에서 현재 시간으로 설정합니다.
JSON 요청 본문:
{
"task": {
"httpRequest": {
"url": "URL",
"httpMethod": "POST",
"oidcToken": {
"serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
}
},
"scheduleTime": "SCHEDULE_TIME"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공한 경우 응답 본문에 새로 생성된 Task 리소스의 인스턴스가 포함됩니다.
{
"name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
"httpRequest": {
"url": "URL",
"httpMethod": "POST",
"headers": {
"User-Agent": "Google-Cloud-Tasks"
},
"oidcToken": {
"serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL",
"audience": "URL"
}
},
"scheduleTime": "SCHEDULE_TIME",
"createTime": "2026-04-30T19:11:50Z",
"dispatchDeadline": "600s",
"view": "BASIC"
}
App Engine 태스크 만들기
작업을 만들 때 작업 이름을 지정할 수 있습니다. 이름이 기존 작업 또는 최근에 삭제되거나 완료된 작업의 이름과 동일하면 호출이 실패합니다. 작업 이름을 지정하지 않으면 임의의 고유 작업 ID가 생성됩니다.
중복된 태스크 이름을 식별하는 추가 조회 비용이 있으므로 사용자 지정 ID로 생성된 태스크의 지연 시간이 크게 증가합니다. 태스크 ID 또는 태스크 ID의 접두사에 해시된 문자열을 사용하는 것이 좋습니다. 자세한 내용은 작업 중복 삭제를 참고하세요.
gcloud
App Engine 태스크를 만들어 기존 큐에 추가하려면 gcloud tasks create-app-engine-task 명령어를 사용합니다.
gcloud tasks create-app-engine-task \
--queue=QUEUE_ID \
--relative-uri=RELATIVE_URI \
--location=REGION \
--project=PROJECT_ID \
--routing=KEY:VALUE
다음을 바꿉니다.
QUEUE_ID: 작업을 추가할 대기열의 이름입니다.RELATIVE_URI: 요청의 상대 URI입니다. 경로는 슬래시 (/)로 시작해야 합니다. 지정하지 않으면 루트 경로 (/)가 사용됩니다.REGION: 선택사항입니다. 대기열이 배포된 리전입니다. 지정하지 않으면 현재 프로젝트의 App Engine 앱 위치가 사용됩니다.PROJECT_ID: 선택사항입니다. 작업이 생성될Google Cloud 프로젝트의 프로젝트 ID입니다.KEY:VALUE: 선택사항입니다. 이 작업에 사용할 경로입니다. 여기서KEY은service,version,instance중 하나 이상입니다. 누락된 키는 기본 라우팅을 사용합니다.
작업을 만든 후 생성된 작업의 전체 리소스 이름이 포함된 확인 메시지가 표시됩니다.
REST
App Engine 태스크를 만들어 기존 큐에 추가하려면 projects.locations.queues.tasks.create 메서드를 사용합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID: 필수 항목입니다. 작업이 생성될 Google Cloud 프로젝트의 프로젝트 ID입니다.REGION: 필수 항목입니다. 대기열이 배포된 리전입니다.QUEUE_ID: 필수 항목입니다. 작업이 추가될 대기열의 ID입니다.RELATIVE_URI: 필수 항목입니다. 요청의 상대 URI입니다. 경로는 슬래시 (/)로 시작해야 합니다. 지정하지 않으면 루트 경로 (/)가 사용됩니다.SERVICE: 선택사항입니다. 태스크를 처리할 App Engine 서비스입니다. 기본적으로 태스크는 태스크가 시도될 때 기본 서비스인 서비스로 전송됩니다.VERSION: 선택사항입니다. 태스크를 처리할 App Engine 버전입니다. 기본적으로 태스크는 태스크가 시도될 때 기본 버전인 버전으로 전송됩니다.SCHEDULE_TIME: 선택사항입니다. 작업이 시도되도록 예약된 시간입니다(RFC 3339 형식, 예:2026-10-02T15:01:23Z). 시간이 설정되지 않았거나 과거인 경우 Cloud Tasks에서 현재 시간으로 설정합니다.
JSON 요청 본문:
{
"task": {
"appEngineHttpRequest": {
"httpMethod": "POST",
"relativeUri": "RELATIVE_URI",
"appEngineRouting": {
"service": "SERVICE",
"version": "VERSION"
}
},
"scheduleTime": "SCHEDULE_TIME"
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공한 경우 응답 본문에 새로 생성된 Task 리소스의 인스턴스가 포함됩니다.
{
"name": "projects/PROJECT_ID/locations/REGION/queues/QUEUE_ID/tasks/TASK_ID",
"appEngineHttpRequest": {
"httpMethod": "POST",
"relativeUri": "RELATIVE_URI",
"appEngineRouting": {
"service": "SERVICE",
"version": "VERSION",
"host": "VERSION.SERVICE.PROJECT_ID.appspot.com"
}
},
"scheduleTime": "SCHEDULE_TIME",
"createTime": "2026-04-30T19:11:50Z",
"dispatchDeadline": "600s",
"view": "BASIC"
}
작업 일괄 만들기
projects.locations.queues.tasks.batchCreate 메서드를 사용하여 요청 목록을 만들어 타겟 태스크 배치를 만들고 기존 큐에 배치를 추가할 수 있습니다.
다음에 유의하세요.
모든 작업은 동일한 대기열에 추가해야 합니다.
단일 일괄 처리에서 만들 수 있는 작업 수에는 제한이 있습니다. 자세한 내용은 할당량 및 한도를 참조하세요.
개별 작업을 단일 요청으로 합산하는 일괄 요청은 배치에 포함된 작업 중 일부는 실패하고 다른 작업은 성공할 수 있기 때문에 원자적이지 않습니다.
작업 일괄 처리를 삭제할 수도 있습니다. 자세한 내용은 큐에서 태스크 일괄 삭제를 참고하세요.
HTTP 태스크
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID: 필수 항목입니다. 작업이 생성될 Google Cloud 프로젝트의 프로젝트 ID입니다.REGION: 필수 항목입니다. 대기열이 배포된 리전입니다(예:us-central1).QUEUE_ID: 필수 항목입니다. 작업이 추가될 대기열의 ID입니다.URL: 필수 항목입니다. 요청이 전송될 정규화된 URL입니다. 이 문자열은http://또는https://로 시작해야 합니다(예:https://www.example.com).SERVICE_ACCOUNT_EMAIL: 선택사항. 작업을 실행할 때 타겟으로 전송되는 요청에 포함된 승인 토큰을 생성하는 데 사용되는 서비스 계정 이메일입니다. 서비스 계정은 대기열과 동일한 프로젝트에 있어야 합니다. 호출자에게 서비스 계정에 대한iam.serviceAccounts.actAs권한이 있어야 합니다.OpenID Connect 토큰 대신 OAuth2 액세스 토큰을 생성하려면
oidcToken필드를oauthToken로 바꿔 서비스 계정 이메일을 지정하세요.
요청 본문에 요청 목록이 포함되어 있습니다.
JSON 요청 본문:
{
"requests": [
{
"task": {
"httpRequest": {
"url": "URL",
"httpMethod": "POST",
"oidcToken": {
"serviceAccountEmail": "SERVICE_ACCOUNT_EMAIL"
}
},
"scheduleTime": "SCHEDULE_TIME"
}
}
]
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공하면 응답 본문에 Operation 리소스의 인스턴스가 포함됩니다.
{
"name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
},
"done": false
}
App Engine 태스크
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID: 필수 항목입니다. 작업이 생성될 Google Cloud 프로젝트의 프로젝트 ID입니다.REGION: 필수 항목입니다. 대기열이 배포된 리전입니다.QUEUE_ID: 필수 항목입니다. 작업이 추가될 대기열의 ID입니다.RELATIVE_URI: 필수 항목입니다. 요청의 상대 URI입니다. 경로는 슬래시 (/)로 시작해야 합니다. 지정하지 않으면 루트 경로 (/)가 사용됩니다.SERVICE: 선택사항입니다. 태스크를 처리할 App Engine 서비스입니다. 기본적으로 태스크는 태스크가 시도될 때 기본 서비스인 서비스로 전송됩니다.VERSION: 선택사항입니다. 태스크를 처리할 App Engine 버전입니다. 기본적으로 태스크는 태스크가 시도될 때 기본 버전인 버전으로 전송됩니다.SCHEDULE_TIME: 선택사항입니다. 작업이 시도되도록 예약된 시간입니다(RFC 3339 형식, 예:2026-10-02T15:01:23Z). 시간이 설정되지 않았거나 과거인 경우 Cloud Tasks에서 현재 시간으로 설정합니다.
요청 본문에 요청 목록이 포함되어 있습니다.
JSON 요청 본문:
{
"requests": [
{
"task": {
"appEngineHttpRequest": {
"httpMethod": "POST",
"relativeUri": "RELATIVE_URI",
"appEngineRouting": {
"service": "SERVICE",
"version": "VERSION"
}
},
"scheduleTime": "SCHEDULE_TIME"
}
}
]
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공하면 응답 본문에 Operation 리소스의 인스턴스가 포함됩니다.
{
"name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.tasks.v2beta3.BatchCreateTasksMetadata"
},
"done": false
}