이 문서에서는 Batch 작업을 만들고 실행할 때 작업의 실행 가능 항목을 설명하는 맞춤 상태 이벤트를 구성하는 방법을 설명합니다. 상태 이벤트에 대한 자세한 내용은 상태 이벤트를 통해 작업 기록 보기를 참조하세요.
커스텀 상태 이벤트를 사용하면 실행 가능 항목의 진행 상황에 대한 추가 세부정보를 태스크 기록에 제공할 수 있으므로 작업을 더 쉽게 분석하고 문제를 해결할 수 있습니다. 예를 들어 실행 가능 항목이 시작되거나, 실행 가능 항목이 종료되거나, 장벽 실행 가능 항목에 도달하거나, 코드 진행 중에 중요한 이벤트가 발생하는 시점을 설명하는 커스텀 상태 이벤트를 구성할 수 있습니다.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
프로젝트에 대한 일괄 작업 편집자(
커스텀 상태 이벤트 구성
작업을 만들 때 다음 옵션 중 하나 이상을 사용하여 맞춤 상태 이벤트를 구성합니다.
표시 이름을 정의하여 실행 가능한 항목의 상태를 설명합니다. gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 이 작업을 수행할 수 있습니다.
이벤트마다
batch/custom/event
필드로 구조화된 태스크 로그를 작성하여 중요한 런타임 이벤트를 표시합니다. 스크립트 및 컨테이너 실행 가능한 항목의 정의의 일부로 작업을 만드는 메서드를 사용할 때 이를 실행할 수 있습니다.
실행 가능한 항목의 상태 설명
실행 가능 항목의 표시 이름(displayName
필드)을 정의하여 실행 가능 항목의 상태를 설명하는 커스텀 상태 이벤트를 구성할 수 있습니다.
결과로 나타나는 커스텀 상태 이벤트는 실행 가능 항목 유형에 따라 약간 다릅니다.
컨테이너 실행 가능 항목 또는 스크립트 실행 가능 항목의 표시 이름을 정의하면 Batch가 자동으로 두 가지 유형의 커스텀 상태 이벤트를 추가합니다. 첫 번째 맞춤 상태 이벤트는 태스크가 이 실행 가능 항목을 시작할 때마다 나타납니다. 두 번째 커스텀 상태 이벤트는 작업이 이 실행 가능 항목을 완료할 때마다 이를 나타내고 상응하는 종료 코드를 나타냅니다.
실행 가능한 장벽의 표시 이름을 정의하면 Batch는 태스크가 이 장벽에 도달할 때마다 이를 나타내는 커스텀 상태 이벤트를 자동으로 추가합니다.
실행 가능 항목의 상태를 설명하는 커스텀 상태 이벤트로 작업을 만들고 실행하려면 gcloud CLI, Batch API 또는 라이브러리를 사용하여 하나 이상의 실행 가능 항목에 displayName
필드를 정의합니다.
gcloud
Google Cloud CLI를 사용하여 JSON 파일의 하나 이상의 runnables
정의에 displayName
필드가 포함된 작업을 만듭니다.
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
예를 들어 각 실행 가능한 항목의 상태를 설명하는 맞춤 상태 이벤트가 있는 작업에는 다음과 유사한 JSON 구성 파일이 포함될 수 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"displayName":"DISPLAY_NAME1",
"script": {
"text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
}
},
{
"displayName":"DISPLAY_NAME2",
"barrier": {}
},
{
"displayName":"DISPLAY_NAME3",
"script": {
"text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
DISPLAY_NAME1
, DISPLAY_NAME2
, DISPLAY_NAME3
을 작업 내에서 고유해야 하는 실행 가능 항목의 이름으로 바꿉니다(예: script 1
, barrier 1
, script 2
).
API
REST API를 사용하여 JSON 파일의 하나 이상의 runnables
정의에 displayName
필드가 포함된 작업을 만듭니다.
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
예를 들어 각 실행 가능한 항목의 상태를 설명하는 맞춤 상태 이벤트가 있는 작업에는 다음과 유사한 JSON 구성 파일이 포함될 수 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"displayName":"DISPLAY_NAME1",
"script": {
"text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
}
},
{
"displayName":"DISPLAY_NAME2",
"barrier": {}
},
{
"displayName":"DISPLAY_NAME3",
"script": {
"text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
DISPLAY_NAME1
, DISPLAY_NAME2
, DISPLAY_NAME3
을 작업 내에서 고유해야 하는 실행 가능 항목의 이름으로 바꿉니다(예: script 1
, barrier 1
, script 2
).
Go
Java
Node.js
Python
예시 작업의 실행이 완료되면 각 태스크의 결과로 나타나는 커스텀 상태 이벤트가 다음과 비슷하게 표시됩니다.
statusEvents:
...
- description: 'script at index #0 with display name [DISPLAY_NAME1] started.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'script at index #0 with display name [DISPLAY_NAME1] finished with exit
code 0.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'barrier at index #2 with display name [DISPLAY_NAME2] reached.'
eventTime: '...'
type: BARRIER_REACHED_EVENT
- description: 'script at index #2 with display name [DISPLAY_NAME3] started.'
eventTime: '...'
type: RUNNABLE_EVENT
- description: 'script at index #2 with display name [DISPLAY_NAME3] finished with exit
code 0.'
eventTime: '...'
type: RUNNABLE_EVENT
...
중요한 런타임 이벤트 표시
Batch 커스텀 상태 이벤트(batch/custom/event
) 필드의 문자열을 정의하는 구조화된 태스크 로그를 작성하도록 실행 가능 항목을 구성하여 실행 가능 항목을 실행하는 동안 중요한 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트를 구성할 수 있습니다.
컨테이너 실행 가능 항목 또는 스크립트 실행 가능 항목이 batch/custom/event
JSON 필드를 정의하는 구조화된 태스크 로그를 작성하는 경우 해당 시점에 커스텀 상태 이벤트가 생성됩니다. 구조화된 태스크 로그를 구성하여 추가 필드를 포함할 수 있지만 맞춤 상태 이벤트에는 batch/custom/event
필드의 문자열만 포함됩니다.
중요한 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트로 작업을 만들고 실행하려면 JSON을 인쇄하여 구조화된 로그를 작성하도록 실행 가능 항목을 하나 이상 구성하고 batch/custom/event
필드를 로그의 일부로 정의합니다.
...
"runnables": [
{
...
"echo '{\"batch/custom/event\":\"EVENT_DESCRIPTION\"}'"
...
}
]
...
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
...
예를 들어 중요한 이벤트가 발생하는 시점을 나타내는 커스텀 상태 이벤트가 있는 작업에는 다음과 유사한 JSON 구성 파일이 있을 수 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "sleep 30; echo '{\"batch/custom/event\": \"EVENT_DESCRIPTION\"}'; sleep 30"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
EVENT_DESCRIPTION
을 맞춤 상태 이벤트의 설명으로 바꿉니다(예: halfway done
).
예시 작업 실행이 완료되면 각 태스크의 결과로 나타나는 커스텀 상태 이벤트가 다음과 비슷하게 표시됩니다.
statusEvents:
...
- description: EVENT_DESCRIPTION
eventTime: '...'
type: RUNNABLE_CUSTOM_EVENT
...
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결 참조하기
- 상태 이벤트를 확인하는 방법 알아보기
- 태스크 로그 작성 방법 알아보기
- 작업 만들기 옵션 자세히 알아보기