Dokumen ini menjelaskan cara membuat tugas Batch yang mengirimkan 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 mengetahui 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.
- Konfigurasi langganan untuk menerima dan menggunakan notifikasi.
Peran yang diperlukan
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat dan menjalankan tugas yang mengirim notifikasi, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Editor Tugas Batch (
roles/batch.jobsEditor
) di project. -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default. -
Editor Pub/Sub (
roles/pubsub.editor
) pada 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.
-
Editor Tugas Batch (
-
Kecuali jika Anda menggunakan konfigurasi default untuk akun layanan tugas, pastikan akun layanan 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 ada di project lain, 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 Anda 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 hal berikut:
gcloud
Gunakan Google Cloud CLI untuk
membuat tugas yang
mencakup 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 Anda 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
mencakup 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 Anda 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 berikutnya
- 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.
- Melihat tugas.
- Pelajari lebih lanjut opsi pembuatan tugas.