이 문서에서는 Pub/Sub 알림을 보내는 Batch 작업을 만드는 방법을 설명합니다. Pub/Sub를 사용하면 작업 또는 태스크 상태가 변경되거나 작업 또는 태스크가 특정 상태로 전환되면 알림을 받을 수 있습니다. 자세한 내용은 알림을 사용하여 작업 모니터링을 참조하세요.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
- Batch 알림에 대한 Pub/Sub 주제를 만들거나 식별합니다.
- 알림을 수신하고 사용하도록 구독을 구성합니다.
필요한 역할
-
알림을 보내는 작업을 만들고 실행하는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 Batch 작업 편집자(
roles/batch.jobsEditor
) -
작업의 서비스 계정(기본적으로 기본 Compute Engine 서비스 계정)에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
) -
Pub/Sub 주제 또는 프로젝트에 대한 Pub/Sub 편집자 (
roles/pubsub.editor
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
프로젝트에 대한 Batch 작업 편집자(
-
작업의 서비스 계정에 대한 기본 구성을 사용하지 않는 경우 필요한 권한이 있는지 확인합니다.
작업의 서비스 계정에 Pub/Sub 알림을 게시하는 데 필요한 권한을 확보하려면 관리자에게 작업의 서비스 계정에 Pub/Sub 주제에 대한 Pub/Sub 게시자(
roles/pubsub.publisher
) IAM 역할을 부여해 달라고 요청하세요. - 작업에서 작업과 다른 프로젝트에 있는 Pub/Sub 주제에 대한 알림을 게시하도록 하려면 작업의 프로젝트에 대한 Batch 서비스 에이전트에 해당 주제에 게시할 수 있는 권한을 부여해야 합니다.
작업의 프로젝트에 대한 Batch 서비스 에이전트에서 다른 프로젝트에서 Pub/Sub 주제에 대한 Pub/Sub 알림을 게시하는 데 필요한 권한을 확보하려면 관리자에게 작업의 프로젝트에 대한 Batch 서비스 에이전트에 Pub/Sub 주제에 대한 Pub/Sub 게시자(
roles/pubsub.publisher
) IAM 역할을 부여해 달라고 요청하세요.
알림을 보내는 작업 만들기 및 실행
다음을 수행하여 Pub/Sub 알림을 보내는 Batch 작업을 만들 수 있습니다.
gcloud
Google Cloud CLI를 사용하여 JSON 파일의 본문에 notifications
필드 및 하나 이상의 jobNotification
객체를 포함하는 작업을 만듭니다.
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
다음을 바꿉니다.
PROJECT_ID
: Pub/Sub 주제가 포함된 프로젝트의 프로젝트 IDTOPIC_ID
: Pub/Sub 알림을 사용 설정할 때 만든 주제의 Pub/Sub 주제 IDATTRIBUTES
: 다음 속성 중 하나 이상을 지정합니다. 각 속성을 사용하면 작업 또는 모든 태스크의 상태에 대한 알림을 받을 수 있습니다.모든 작업 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "JOB_STATE_CHANGED"
특정 작업 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
JOB_STATE
를 다음 작업 상태 중 하나로 바꿉니다.QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
작업 상태에 대한 자세한 내용은 작업 수명 주기를 참조하세요.
모든 태스크 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "TASK_STATE_CHANGED"
특정 태스크 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
TASK_STATE
를 다음 태스크 상태 중 하나로 바꿉니다.PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
태스크 상태에 대한 자세한 내용은 작업 수명 주기를 참조하세요.
예를 들어 모든 작업 상태 변경과 작업 실패에 대한 알림을 받으려고 합니다. 이를 위해 다음과 유사한 JSON 구성 파일이 있을 수 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3,
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
},
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
}
API
REST API를 사용하여 JSON 파일의 본문에 notifications
필드 및 하나 이상의 jobNotification
객체를 포함하는 작업을 만듭니다.
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
다음을 바꿉니다.
PROJECT_ID
: Pub/Sub 주제가 포함된 프로젝트의 프로젝트 IDTOPIC_ID
: Pub/Sub 알림을 사용 설정할 때 만든 주제의 Pub/Sub 주제 IDATTRIBUTES
: 다음 속성 중 하나 이상을 지정합니다. 각 속성을 사용하면 작업 또는 모든 태스크의 상태에 대한 알림을 받을 수 있습니다.모든 작업 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "JOB_STATE_CHANGED"
특정 작업 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
JOB_STATE
를 다음 작업 상태 중 하나로 바꿉니다.QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
작업 상태에 대한 자세한 내용은 작업 수명 주기를 참조하세요.
모든 태스크 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "TASK_STATE_CHANGED"
특정 태스크 상태 변경에 대한 알림을 받으려면 다음을 지정합니다.
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
TASK_STATE
를 다음 태스크 상태 중 하나로 바꿉니다.PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
태스크 상태에 대한 자세한 내용은 작업 수명 주기를 참조하세요.
예를 들어 모든 작업 상태 변경과 작업 실패에 대한 알림을 받으려고 합니다. 이를 위해 다음과 유사한 JSON 구성 파일이 있을 수 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3,
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
},
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "JOB_STATE_CHANGED"
}
},
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
"type": "TASK_STATE_CHANGED",
"newTaskState": "FAILED"
}
}
]
}
Go
자바
Node.js
Python
작업 실행이 시작된 후 해당 알림을 사용할 수 있습니다. 예를 들어 작업의 Pub/Sub 주제에 알림을 BigQuery로 스트리밍하는 구독이 있는 경우 BigQuery에서 Pub/Sub 알림을 분석할 수 있습니다.
다음 단계
- Pub/Sub 알림 및 BigQuery를 사용하여 작업 상태 모니터링 방법 자세히 알아보기
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결 참조
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기