Anda dapat menggunakan Cloud Scheduler untuk memicu layanan Cloud Run dengan aman sesuai jadwal. Hal ini mirip dengan menggunakan cron job.
Kemungkinan kasus penggunaan meliputi:
- Melakukan pencadangan berdasarkan waktu
- Melakukan tugas administrasi berulang, seperti:
- Membuat kembali sitemap
- Menghapus data, konten, konfigurasi, atau revisi lama
- Menyinkronkan konten antar-sistem data
- Memproses notifikasi email harian
- Memverifikasi dan melaporkan akses ke layanan downstream
- Membuat dokumen, seperti tagihan
Halaman ini menunjukkan cara aman menggunakan Cloud Scheduler dengan Cloud Run di project Google Cloud yang sama.
Sebelum memulai
Aktifkan Cloud Scheduler API di project yang Anda gunakan.
Membuat dan men-deploy layanan Anda
Untuk membuat dan men-deploy:
Di layanan Anda, implementasikan tugas yang ingin dijalankan sesuai jadwal.
Perhatikan jenis permintaan yang diperkirakan akan diterima oleh layanan Anda misalnya, dari
GET
atauPOST
. Saat membuat tugas terjadwal yang memanggil layanan, Anda harus menentukan metode HTTP yang cocok dengannya.Saat men-deploy layanan yang Anda gunakan dengan Cloud Scheduler, pastikan Anda TIDAK mengizinkan pemanggilan yang tidak diautentikasi.
Contoh berikut menunjukkan cara men-deploy layanan Cloud Run menggunakan Terraform:
Ganti us-docker.pkg.dev/cloudrun/container/hello
dengan referensi ke image container Anda sendiri.
Membuat akun layanan untuk Cloud Scheduler
Anda perlu membuat akun layanan untuk dikaitkan dengan Cloud Scheduler, dan memberi akun layanan tersebut izin untuk memanggil layanan Cloud Run. Anda dapat menggunakan akun layanan yang ada untuk mewakili Cloud Scheduler, atau membuat yang baru.
Untuk membuat akun layanan dan memberinya izin memanggil layanan Cloud Run:
Konsol
Di Konsol Google Cloud, buka halaman Akun layanan.
Pilih project.
Masukkan nama akun layanan untuk ditampilkan di Google Cloud Console.
Konsol Google Cloud membuat ID akun layanan berdasarkan nama ini. Edit ID jika diperlukan. Anda tidak dapat mengubah ID nanti.
(Opsional) Masukkan deskripsi tentang akun layanan.
Klik Buat dan lanjutkan.
Opsional: Klik kolom Pilih peran.
Pilih Cloud Run > Cloud Run Invoker.
Klik Done.
Command line
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Ganti
- SERVICE_ACCOUNT_NAME dengan nama huruf kecil unik dalam
project Google Cloud Anda, misalnya
my-invoker-service-account-name
. - DISPLAYED_SERVICE_ACCOUNT_NAME dengan nama yang ingin Anda
tampilkan untuk akun layanan ini, misalnya, di konsol, misalnya,
My Invoker Service Account
.
- SERVICE_ACCOUNT_NAME dengan nama huruf kecil unik dalam
project Google Cloud Anda, misalnya
Untuk Cloud Run, beri akun layanan Anda izin untuk memanggil layanan Anda:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Ganti
- SERVICE dengan nama layanan yang ingin Anda panggil oleh Cloud Scheduler.
- SERVICE_ACCOUNT_NAME dengan nama akun layanan.
- PROJECT_ID dengan ID project Google Cloud Anda.
Beri akun layanan Anda akses ke project sehingga ia memiliki izin untuk menyelesaikan tindakan tertentu pada resource di project Anda:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Ganti
RESOURCE_ID: ID project Google Cloud Anda.
PRINCIPAL: ID untuk akun utama, atau anggota, yang biasanya memiliki formulir berikut: PRINCIPAL_TYPE:ID. Misalnya,
user:my-user@example.com
. Untuk daftar lengkap nilai yang dapat dimiliki PRINCIPAL, lihat referensi Binding Kebijakan.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat akun layanan menggunakan Terraform:
Membuat tugas Cloud Scheduler
Anda harus membuat tugas yang memanggil layanan Anda pada waktu yang telah ditentukan. Anda dapat menggunakan konsol atau command line:
Untuk membuat tugas, Anda dapat menggunakan konsol atau command line gcloud. Klik tab yang sesuai:
Konsol
Buka halaman konsol Cloud Scheduler.
Klik Create Job.
Berikan nama untuk tugas.
Tentukan frekuensi, atau interval tugas, saat tugas akan dijalankan, menggunakan string konfigurasi. Misalnya, string
0 */3 * * *
menjalankan tugas setiap 3 jam. String yang Anda berikan di sini dapat berupa string apa pun yang kompatibel dengan crontab.Untuk informasi selengkapnya, lihat Mengonfigurasi Jadwal Tugas.
Dari daftar dropdown, pilih zona waktu yang akan digunakan untuk frekuensi tugas.
Tentukan
HTTP
sebagai target:Tentukan URL layanan Anda yang sepenuhnya memenuhi syarat, misalnya
https://myservice-abcdef-uc.a.run.app
Tugas akan mengirim permintaan ke URL ini.Tentukan metode HTTP: metode tersebut harus cocok dengan yang diharapkan oleh layanan Cloud Run yang di-deploy sebelumnya. Defaultnya adalah
POST
.(Opsional) Tentukan data yang akan dikirim ke target. Data ini dikirim dalam isi permintaan jika metode HTTP
POST
atauPUT
dipilih.Klik Lainnya untuk menampilkan setelan autentikasi.
Dari menu dropdown, pilih Tambahkan token OIDC.
Di kolom Service account, salin email akun layanan dari akun layanan yang Anda buat sebelumnya.
Di kolom Audiens, salin URL lengkap layanan Anda.
Klik Buat untuk membuat dan menyimpan tugas.
Command line
Anda harus menggunakan autentikasi OIDC untuk mengakses layanan Cloud Run terautentikasi dari Cloud Scheduler. Autentikasi OIDC mencakup akun layanan dan tanda audiens. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Autentikasi untuk Target HTTP.
Untuk membuat tugas Cloud Scheduler:
gcloud scheduler jobs create http test-job --schedule "5 * * * *"
--http-method=HTTP-METHOD
--uri=SERVICE-URL
--oidc-service-account-email=SERVICE-ACCOUNT-EMAIL
--oidc-token-audience=SERVICE-URL
Ganti
- HTTP-METHOD dengan metode HTTP (yaitu GET, POST, PUT, dll.).
- SERVICE-URL dengan URL layanan Anda.
- SERVICE-ACCOUNT-EMAIL dengan email akun layanan Anda.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat tugas Cloud Scheduler untuk layanan Cloud Run:
Layanan Cloud Run akan dipicu melalui permintaan oleh tugas Cloud Scheduler pada frekuensi yang Anda tetapkan. Anda dapat mengonfirmasi dan memantaunya dengan memeriksa log untuk layanan ini.