Dokumen ini menjelaskan cara membuat tugas Batch yang mengirim notifikasi Pub/Sub. Anda dapat menggunakan Pub/Sub untuk mendapatkan notifikasi saat status tugas atau pekerjaan berubah, atau saat tugas atau pekerjaan memasuki status tertentu. Untuk informasi selengkapnya, lihat Memantau tugas menggunakan notifikasi.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
- Buat atau identifikasi topik Pub/Sub untuk notifikasi Batch.
- Mengonfigurasi langganan untuk menerima dan menggunakan notifikasi.
Peran yang diperlukan
-
Untuk mendapatkan izin yang diperlukan guna membuat dan menjalankan tugas yang mengirim notifikasi, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project. -
Service Account User (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default. -
Pub/Sub Editor (
roles/pubsub.editor
) di topik atau project Pub/Sub.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
-
Kecuali jika Anda menggunakan konfigurasi default untuk akun layanan tugas, pastikan akun tersebut memiliki izin yang diperlukan.
Untuk memastikan bahwa akun layanan tugas memiliki izin yang diperlukan untuk memublikasikan notifikasi Pub/Sub, minta administrator untuk memberikan peran IAM Pub/Sub Publisher (
roles/pubsub.publisher
) kepada akun layanan tugas di topik Pub/Sub Anda. - Jika Anda ingin tugas memublikasikan notifikasi ke topik Pub/Sub yang berada di project yang berbeda dengan tugas, maka Agen layanan batch untuk project tugas harus diberi izin untuk memublikasikan ke topik tersebut.
Untuk memastikan bahwa agen layanan Batch untuk project tugas memiliki izin yang diperlukan untuk memublikasikan notifikasi Pub/Sub ke topik Pub/Sub di project lain, minta administrator untuk memberikan peran IAM Pub/Sub Publisher (
roles/pubsub.publisher
) kepada agen layanan Batch untuk project tugas di topik Pub/Sub.
Membuat dan menjalankan tugas yang mengirim notifikasi
Anda dapat membuat tugas Batch yang mengirimkan notifikasi Pub/Sub dengan melakukan tindakan berikut:
gcloud
Gunakan Google Cloud CLI untuk
membuat tugas yang
menyertakan kolom notifications
dan satu atau beberapa
objek jobNotification
di isi utama file JSON:
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
Ganti kode berikut:
PROJECT_ID
: project ID project yang berisi topik Pub/Sub.TOPIC_ID
: ID topik Pub/Sub dari topik yang Anda buat saat mengaktifkan notifikasi Pub/Sub.ATTRIBUTES
: tentukan satu atau beberapa atribut berikut, yang masing-masing memungkinkan Anda menerima notifikasi tentang status tugas atau semua tugasnya.Untuk notifikasi tentang semua perubahan status tugas, tentukan hal berikut:
"type": "JOB_STATE_CHANGED"
Untuk notifikasi tentang perubahan status tugas tertentu, tentukan hal berikut:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ganti
JOB_STATE
dengan salah satu status tugas berikut:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Untuk mengetahui informasi selengkapnya tentang status tugas, lihat Siklus proses tugas.
Untuk notifikasi tentang semua perubahan status tugas, tentukan hal berikut:
"type": "TASK_STATE_CHANGED"
Untuk notifikasi tentang perubahan status tugas tertentu, tentukan hal berikut:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Ganti
TASK_STATE
dengan salah satu status tugas berikut:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Untuk mengetahui informasi selengkapnya tentang status tugas, lihat Siklus proses tugas.
Misalnya, Anda ingin menerima notifikasi tentang semua perubahan status tugas dan setiap kali tugas gagal. Untuk melakukannya, Anda dapat memiliki file konfigurasi JSON yang mirip dengan berikut:
{
"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
Gunakan REST API untuk
membuat tugas yang
menyertakan kolom notifications
dan satu atau beberapa
objek jobNotification
di isi utama file JSON:
{
...
"notifications": [
{
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"message": {
ATTRIBUTES
}
}
]
...
}
Ganti kode berikut:
PROJECT_ID
: project ID project yang berisi topik Pub/Sub.TOPIC_ID
: ID topik Pub/Sub dari topik yang Anda buat saat mengaktifkan notifikasi Pub/Sub.ATTRIBUTES
: tentukan satu atau beberapa atribut berikut, yang masing-masing memungkinkan Anda menerima notifikasi tentang status tugas atau semua tugasnya.Untuk notifikasi tentang semua perubahan status tugas, tentukan hal berikut:
"type": "JOB_STATE_CHANGED"
Untuk notifikasi tentang perubahan status tugas tertentu, tentukan hal berikut:
"type": "JOB_STATE_CHANGED", "newJobState": "JOB_STATE"
Ganti
JOB_STATE
dengan salah satu status tugas berikut:QUEUED
SCHEDULED
RUNNING
SUCCEEDED
FAILED
Untuk mengetahui informasi selengkapnya tentang status tugas, lihat Siklus proses tugas.
Untuk notifikasi tentang semua perubahan status tugas, tentukan hal berikut:
"type": "TASK_STATE_CHANGED"
Untuk notifikasi tentang perubahan status tugas tertentu, tentukan hal berikut:
"type": "TASK_STATE_CHANGED", "newTaskState": "TASK_STATE"
Ganti
TASK_STATE
dengan salah satu status tugas berikut:PENDING
ASSIGNED
RUNNING
SUCCEEDED
FAILED
Untuk mengetahui informasi selengkapnya tentang status tugas, lihat Siklus proses tugas.
Misalnya, Anda ingin menerima notifikasi tentang semua perubahan status tugas dan setiap kali tugas gagal. Untuk melakukannya, Anda dapat memiliki file konfigurasi JSON yang mirip dengan berikut:
{
"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
Java
Node.js
Python
Setelah tugas mulai berjalan, Anda dapat menggunakan notifikasinya. Misalnya, jika topik Pub/Sub untuk tugas Anda memiliki langganan yang melakukan streaming notifikasi ke BigQuery, Anda dapat menganalisis notifikasi Pub/Sub di BigQuery.
Langkah selanjutnya
- Pelajari lebih lanjut cara memantau status tugas menggunakan notifikasi Pub/Sub dan BigQuery.
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Lihat tugas dan pekerjaan.
- Pelajari opsi pembuatan tugas lainnya.