Mengelola cron job

Target Pub/Sub

Jika Anda memilih jenis target Pub/Sub:

  1. Tentukan nama topik tempat tugas akan dipublikasikan. Ini adalah topik Pub/Sub yang telah Anda siapkan di project Anda.

  2. Tentukan pesan yang akan dikirim ke topik. Ini dikirim sebagai parameter data dalam pesan Pub/Sub. Untuk contoh yang melakukan hal ini, lihat Panduan memulai.

  3. Tambahkan atribut pesan yang Anda perlukan.

  4. Siapkan konfigurasi tambahan menggunakan bagian Configure optional settings.

Cloud Scheduler akan memublikasikan pesan ke topik ini sebagai akun layanan Google API.

Target HTTP App Engine

Jika memilih jenis target App Engine HTTP, Anda harus menggunakan aplikasi App Engine dan region yang terkait dengan project saat ini. Jika Anda ingin menggunakan aplikasi App Engine lain di luar project saat ini, pilih HTTP sebagai target, bukan App Engine HTTP. Aturan firewall target harus mengizinkan permintaan dari rentang IP 0.1.0.2/32.

Tetapkan formulir sebagai berikut:

  1. Dalam daftar Target type, pilih App Engine HTTP.

  2. Tentukan nama layanan App Engine yang menjalankan pengendali untuk tugas Cloud Scheduler. Jika dihilangkan, layanan default akan diasumsikan. Jika ingin menetapkannya, Anda dapat menemukan nama layanan di konsolGoogle Cloud .

  3. Atau, tentukan versinya. Jika tidak ditetapkan, versi yang saat ini ditayangkan akan digunakan. Anda dapat menemukan versi yang tersedia di Google Cloud console.

  4. Atau, tentukan instance. Jika tidak ditetapkan, instance yang tersedia dapat digunakan. Anda dapat menemukan versi yang tersedia di Google Cloud console.

  5. Tentukan URL relatif endpoint App Engine yang akan dihubungi tugas. Jika Anda menggunakan nilai default /, tugas akan menggunakan PROJECT-ID.appspot.com dengan PROJECT-ID adalah project ID Anda saat ini.

  6. Tetapkan metode HTTP yang ingin Anda gunakan saat tugas dijalankan. Defaultnya adalah POST.

  7. Tambahkan header yang Anda perlukan ke permintaan.

  8. (Opsional) Tentukan data isi yang akan dikirim ke target. Data ini dikirim dalam isi permintaan sebagai byte jika metode HTTP POST atau PUT dipilih.

Endpoint App Engine yang ditargetkan harus berada dalam project yang sama dan dapat diamankan dengan login: admin pada elemen handlers dalam file app.yaml.

Target HTTP

Jika Anda memilih jenis target HTTP:

  1. Tentukan URL endpoint yang sepenuhnya memenuhi syarat yang akan dihubungi oleh tugas.

  2. Tentukan metode HTTP. Nilai defaultnya adalah POST.

  3. Opsional: Tentukan data yang akan dikirim ke target. Data ini dikirim dalam isi permintaan sebagai byte jika metode HTTP POST atau PUT dipilih.

  4. Opsional: Tambahkan header yang Anda perlukan. Jika endpoint target Anda memerlukan kunci API di header, gunakan nama header yang diharapkan oleh layanan target Anda, seperti x-api-key atau X-Goog-Api-Key. Menggunakan api_key sebagai nama header dapat menyebabkan kegagalan autentikasi.

  5. Untuk membuat tugas target HTTP yang memerlukan autentikasi, lihat Menggunakan autentikasi dengan target HTTP.

Endpoint HTTP yang ditargetkan harus dapat diakses secara publik.

Anda dapat menggunakan Cloud Scheduler untuk menyiapkan unit kerja terjadwal, yang dikenal sebagai cron job, yang dikirim ke target pada beberapa jadwal berulang, yang juga disebut interval atau frekuensi tugas.

Hanya satu instance tugas yang dapat dijalankan pada satu waktu. Dalam situasi yang jarang terjadi, beberapa instance dari tugas yang sama dapat diminta. Oleh karena itu, pengendali permintaan Anda harus bersifat idempotent, dan kode Anda harus memastikan bahwa tidak ada efek samping yang berbahaya jika hal ini terjadi.

Jika tugas masih berjalan atau menunggu respons dari targetnya, operasi terjadwal lainnya dari tugas tersebut akan dilewati hingga operasi saat ini selesai atau waktu habis. Untuk mengetahui informasi selengkapnya, lihat Eksekusi tugas berikutnya tidak dimulai.

Cloud Scheduler ditujukan untuk tugas berulang. Jika Anda hanya perlu menjalankan tugas satu kali, pertimbangkan untuk menggunakan Cloud Tasks, yang dapat menjadwalkan tugas hingga 30 hari sebelumnya.

Sebelum memulai

Pastikan Anda telah menyiapkan lingkungan untuk Cloud Scheduler.

Memilih jenis penargetan

Cloud Scheduler dapat memanggil jenis target berikut:

Memanggil layanan target yang dibatasi untuk traffic masuk internal

Cloud Scheduler dapat memanggil layanan berikut secara internal:

  • Cloud Run Functions
  • Cloud Run (di URL run.app, bukan di domain kustom)

Untuk memanggil target ini secara internal, target harus berada dalam project atau perimeter Kontrol Layanan VPC yang sama dengan tugas Cloud Scheduler Anda.Google Cloud

Untuk mempelajari lebih lanjut cara mengamankan target dengan membatasi ingress, lihat Membatasi ingress (untuk Cloud Run) dan Mengonfigurasi setelan jaringan (untuk Cloud Run Functions).

Buat tugas

Anda dapat membuat tugas menggunakan konsol Google Cloud atau Google Cloud CLI.

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Scheduler.

    Buka Cloud Scheduler

  2. Klik Buat tugas.

  3. Di kolom Name, berikan nama untuk tugas yang unik untuk project.

    Setelah menghapus tugas terkait, Anda dapat menggunakan kembali nama tugas dalam sebuah project.

  4. Di daftar Region, pilih region.

    Jika menggunakan target HTTP App Engine, Anda harus memilih region yang sama dengan aplikasi App Engine Anda. Untuk mengetahui informasi selengkapnya, lihat Wilayah yang didukung menurut target.

  5. Opsional: Berikan deskripsi singkat tentang tugas, seperti pengingat tentang fungsi tugas.

    Deskripsi ini akan muncul di konsol di samping nama tugas.

  6. Tentukan frekuensi saat tugas akan dijalankan, menggunakan string konfigurasi.

    Misalnya, string 0 1 * * 0 menjalankan tugas seminggu sekali pada pukul 01.00 setiap Minggu pagi. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

  7. Dalam daftar Timezone, pilih zona waktu yang akan digunakan untuk jadwal tugas.

  8. Klik Lanjutkan.

  9. Tentukan Jenis target:

    • HTTP

    • Pub/Sub: Anda harus menentukan nama topik Pub/Sub yang telah disiapkan dalam project dan yang akan dipublikasikan oleh tugas.

    • HTTP App Engine: Anda harus menggunakan aplikasi App Engine dan region yang terkait dengan project saat ini.

  10. Klik Lanjutkan.

  11. Opsional: Untuk mengonfigurasi perilaku percobaan ulang, klik Configure optional settings. Untuk menentukan durasi, gunakan urutan bilangan bulat non-negatif desimal dengan akhiran unit berikut:

    • h - jam
    • m - menit
    • s - detik
    • ms - milidetik
    • us - mikrodetik
    • ns - nanodetik

    Nilai negatif dan pecahan tidak diizinkan. Kolom Max retry duration hanya mendukung nilai h ,m, dan s. Min backoff duration dan Max backoff duration mendukung set lengkap.

  12. Opsional: Untuk target HTTP dan HTTP App Engine, konfigurasikan batas waktu untuk upaya tugas. Jika pengendali permintaan tidak merespons sebelum batas waktu ini, permintaan akan dibatalkan dan upaya tersebut akan ditandai sebagai gagal. Cloud Scheduler mencoba ulang tugas sesuai dengan konfigurasi percobaan ulang.

  13. Untuk membuat dan menyimpan tugas, klik Create.

    Tugas sekarang akan berjalan pada frekuensi yang ditentukan.

gcloud

Saat membuat tugas menggunakan gcloud CLI, Anda menggunakan perintah yang berbeda untuk setiap jenis target:

HTTP

Anda dapat mengirim permintaan ke endpoint HTTP atau HTTPS apa pun. Endpoint HTTP yang ditargetkan harus dapat diakses secara publik.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda dijalankan.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

  • URI: URI endpoint yang sepenuhnya memenuhi syarat yang akan dihubungi tugas.

Parameter lainnya dijelaskan dalam referensi command line gcloud:

  • Opsional: Tentukan metode HTTP. Nilai defaultnya adalah POST.

  • Opsional: Tentukan data yang akan dikirim ke target. Data ini dikirim dalam isi permintaan sebagai byte jika metode HTTP POST atau PUT dipilih.

  • Opsional: Gunakan flag --headers untuk menyertakan header permintaan HTTP. Jika endpoint target Anda memerlukan kunci API di header, gunakan nama header yang diharapkan oleh layanan target Anda, seperti x-api-key atau X-Goog-Api-Key. Menggunakan api_key sebagai nama header dapat menyebabkan kegagalan autentikasi.

  • Opsional: Tetapkan nilai percobaan ulang, yang menentukan cara tugas App Engine dicoba ulang jika terjadi kegagalan. Biasanya, nilai default sudah cukup.

  • Untuk membuat tugas Target HTTP yang memerlukan autentikasi, lihat Menggunakan Autentikasi dengan Target HTTP.

Contoh

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Anda harus menggunakan topik Pub/Sub yang telah disiapkan dalam project. Cloud Scheduler akan memublikasikan pesan ke topik ini sebagai akun layanan Google API.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda dijalankan.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

  • TOPIC: nama topik tempat tugas akan dipublikasikan. Gunakan flag --message-body atau --message-body-from-file, untuk menentukan pesan yang akan dikirim ke topik. Ini dikirim sebagai parameter data dalam pesan Pub/Sub. Untuk mengetahui contoh yang melakukan hal ini, lihat panduan memulai.

Parameter lainnya dijelaskan dalam referensi command line gcloud.

Contoh

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP App Engine

Target App Engine HTTP hanya tersedia untuk aplikasi App Engine yang terkait dengan project saat ini. Jika Anda ingin menggunakan beberapa aplikasi App Engine lain di luar project saat ini, pilih HTTP sebagai target, bukan App Engine HTTP. Aturan firewall target harus mengizinkan permintaan dari rentang IP 0.1.0.2/32.

Endpoint App Engine dapat diamankan dengan login: admin pada elemen handlers di file app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda dijalankan. Lokasi ini harus sama dengan lokasi aplikasi App Engine Anda.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

Parameter lainnya dijelaskan dalam referensi command line gcloud:

  • Tentukan URL relatif endpoint App Engine yang akan dihubungi oleh tugas. Jika Anda menggunakan nilai default /, tugas akan menggunakan PROJECT-ID.appspot.com dengan PROJECT-ID adalah project ID Anda saat ini.

  • Tentukan nama layanan App Engine yang menjalankan pengendali untuk tugas Cloud Scheduler. Jika dihilangkan, layanan default akan diasumsikan. Jika ingin menetapkannya, Anda dapat menemukan nama layanan di konsolGoogle Cloud .

  • Opsional: Tetapkan metode HTTP yang ingin Anda gunakan saat tugas dijalankan. Nilai defaultnya adalah POST.

  • Opsional: Tentukan versi. Jika tidak ditetapkan, versi yang saat ini ditayangkan akan digunakan. Anda dapat menemukan versi yang tersedia di Google Cloud console.

  • Opsional: Tentukan instance. Jika tidak ditetapkan, instance yang tersedia dapat digunakan. Anda dapat menemukan versi yang tersedia di Google Cloud console.

  • Opsional: Tentukan data yang akan dikirim ke target. Data ini dikirim dalam isi permintaan sebagai byte jika metode HTTP POST atau PUT dipilih.

  • Opsional: Tetapkan nilai percobaan ulang, yang menentukan cara tugas App Engine dicoba ulang jika terjadi kegagalan. Biasanya, nilai default sudah cukup.

Contoh

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Mengedit tugas

Anda dapat mengedit konfigurasi tugas.

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Scheduler.

    Buka Cloud Scheduler

  2. Pilih tugas yang akan diedit.

  3. Klik Edit.

  4. Ikuti langkah-langkah untuk menentukan jadwal, mengonfigurasi eksekusi, dan mengonfigurasi setelan opsional saat membuat tugas.

gcloud

Saat mengedit tugas menggunakan gcloud CLI, Anda menggunakan perintah yang berbeda untuk setiap jenis target:

HTTP

Anda dapat mengirim permintaan ke endpoint HTTP atau HTTPS apa pun. Endpoint HTTP yang ditargetkan harus dapat diakses secara publik.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda dijalankan. Jika Anda tidak menentukan lokasi, gcloud CLI akan menggunakan lokasi default Anda. Jika tugas yang ingin Anda edit berada di lokasi yang berbeda, Anda harus menentukan lokasi selain NAME agar tugas Anda dapat diidentifikasi. Anda tidak dapat memperbarui lokasi tugas.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

  • URI: URI endpoint yang sepenuhnya memenuhi syarat yang akan dihubungi tugas.

Parameter lainnya dijelaskan dalam referensi command line gcloud.

Contoh

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Anda harus menggunakan topik Pub/Sub yang telah disiapkan dalam project. Cloud Scheduler akan memublikasikan pesan ke topik ini sebagai akun layanan Google API.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda dijalankan. Jika Anda tidak menentukan lokasi, gcloud CLI akan menggunakan lokasi default Anda. Jika tugas yang ingin Anda edit berada di lokasi yang berbeda, Anda harus menentukan lokasi selain NAME agar tugas Anda dapat diidentifikasi. Anda tidak dapat memperbarui lokasi tugas.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

  • TOPIC: nama topik tempat tugas akan dipublikasikan. Gunakan flag --message-body atau --message-body-from-file untuk menentukan pesan yang akan dikirim ke topik. Ini dikirim sebagai parameter data dalam pesan Pub/Sub. Untuk mengetahui contoh yang melakukan hal ini, lihat panduan memulai.

Parameter lainnya dijelaskan dalam referensi command line gcloud.

Contoh

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP App Engine

Target App Engine HTTP hanya tersedia untuk aplikasi App Engine yang terkait dengan project saat ini. Jika Anda ingin menggunakan beberapa aplikasi App Engine lain di luar project saat ini, pilih HTTP sebagai target, bukan App Engine HTTP.

Endpoint App Engine dapat diamankan dengan login: admin pada elemen handlers di file app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Ganti kode berikut:

  • JOB: nama tugas yang harus unik dalam project. Perlu diperhatikan bahwa Anda tidak dapat menggunakan kembali nama tugas dalam sebuah project meskipun menghapus tugas terkaitnya.

  • LOCATION: lokasi tempat tugas Anda berjalan (sama dengan lokasi aplikasi App Engine target Anda). Jika Anda tidak menentukan lokasi, gcloud CLI akan menggunakan lokasi default Anda. Jika tugas yang ingin Anda edit berada di lokasi yang berbeda, Anda harus menentukan lokasi selain NAME agar tugas Anda dapat diidentifikasi. Anda tidak dapat memperbarui lokasi tugas.

  • SCHEDULE: frekuensi, atau interval tugas, saat tugas akan dijalankan, misalnya, every 3 hours. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan unix-cron. Meskipun kami tidak lagi merekomendasikan penggunaannya, sintaksis cron App Engine lama masih didukung untuk tugas yang ada.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi jadwal cron job.

Parameter lainnya dijelaskan dalam referensi command line gcloud.

Contoh

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Menjeda tugas

Anda dapat menjeda eksekusi tugas.

Konsol

  1. Di konsol Google Cloud , buka Cloud Scheduler.

    Buka Cloud Scheduler

  2. Pilih tugas yang akan dijeda.

  3. Klik Jeda.

gcloud

  1. Buka jendela terminal di komputer tempat Anda menginstal gcloud CLI.

  2. Jalankan perintah:

     gcloud scheduler jobs pause MY_JOB
    

    Ganti MY_JOB dengan nama tugas yang akan dijeda.

Saat tugas dijeda, Anda juga dapat mengeditnya. Setelah mengedit tugas, tugas tersebut akan tetap dijeda hingga Anda melanjutkannya.

Melanjutkan tugas

Anda dapat melanjutkan eksekusi tugas yang dijeda.

Konsol

  1. Di konsol Google Cloud , buka Cloud Scheduler.

    Buka Cloud Scheduler

  2. Pilih tugas yang akan dilanjutkan.

    Tugas harus sudah dijeda.

  3. Klik Lanjutkan.

gcloud

  1. Buka jendela terminal di komputer tempat Anda menginstal gcloud CLI.

  2. Jalankan perintah:

     gcloud scheduler jobs resume MY_JOB
    

    Ganti MY_JOB dengan nama tugas yang akan dilanjutkan.

Menghapus tugas

Anda dapat menghapus tugas.

Konsol

  1. Di konsol Google Cloud , buka Cloud Scheduler.

    Buka Cloud Scheduler

  2. Pilih tugas yang akan dihapus.

  3. Klik Hapus.

gcloud

  1. Buka jendela terminal di komputer tempat Anda menginstal gcloud CLI.

  2. Jalankan perintah:

     gcloud scheduler jobs delete MY_JOB
    

    Ganti MY_JOB dengan nama tugas yang akan dihapus.