Tutorial ini menunjukkan cara menjadwalkan fungsi Cloud Run HTTP dengan menargetkan endpoint HTTP di Cloud Scheduler. Gunakan fungsi HTTP jika Anda ingin fungsi memiliki endpoint URL dan merespons permintaan HTTP, seperti untuk webhook.
Atau, jika Anda membuat fungsi berbasis peristiwa berdasarkan CloudEvents, gunakan pemicu Eventarc untuk menjadwalkan fungsi Anda agar merespons peristiwa dalam project Anda. Eventarc dapat memicu pesan pada topik Pub/Sub, perubahan dalam bucket Cloud Storage, dan lainnya. Untuk mengetahui informasi selengkapnya, lihat Menulis fungsi Cloud Run.
Menjadwalkan eksekusi fungsi Cloud Run adalah kasus penggunaan umum untuk Cloud Scheduler. Dalam tutorial ini, Anda akan:
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen yang dapat ditagih berikut Google Cloud:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles. -
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click Add another role and add each additional role.
- Click Continue.
-
Click Done to finish creating the service account.
-
Ensure that you have the Create Service Accounts IAM role
(
Perhatikan bahwa Anda harus memberikan peran Cloud Run Invoker karena dalam fungsi Cloud Run, izin pemanggilan tersedia dengan mengelola layanan Cloud Run yang mendasarinya.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Cloud Run Source Developer (
roles/run.sourceDeveloper) -
Cloud Scheduler Admin (
roles/cloudscheduler.admin) -
Logs View Accessor (
roles/logging.viewAccessor) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin) -
Admin Akun Layanan (
roles/iam.serviceAccountAdmin) -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Memberikan peran
Konsol
-
Di Google Cloud konsol, buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. ID ini biasanya adalah alamat email yang digunakan untuk men-deploy layanan Cloud Run.
- Di daftar Select a role, pilih peran.
- Untuk memberikan peran tambahan, klik Add another role , lalu tambahkan tiap peran tambahan.
- Klik Save.
gcloud
Untuk memberikan peran IAM yang diperlukan ke akun Anda di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Ganti:
- PROJECT_NUMBER dengannomor project Anda. Google Cloud
- PROJECT_ID denganID project Anda. Google Cloud
- PRINCIPAL dengan akun yang Anda tambahkan binding-nya. ID ini biasanya adalah alamat email yang digunakan untuk men-deploy layanan Cloud Run.
- ROLE dengan peran yang Anda tambahkan ke akun deployer.
Membuat fungsi Cloud Run HTTP
Buat fungsi HTTP yang dipicu oleh Cloud Scheduler.
Di Google Cloud konsol, buka halaman Cloud Run > Services.
Klik Write a function.
Di bagian Configure, lakukan hal berikut:
- Di kolom Service name, masukkan nama untuk fungsi Anda.
- Di daftar Region, pilih region.
- Jangan ubah bahasa runtime default.
Untuk autentikasi, pilih Require authentication.
Jika Anda dikenai kebijakan organisasi pembatasan domain yang membatasi pemanggilan yang tidak terautentikasi untuk project, Anda perlu mengakses layanan yang di-deploy seperti yang dijelaskan di bagian Menguji layanan pribadi.
Untuk mengetahui informasi selengkapnya, lihat Ringkasan autentikasi.
Terima nilai default lainnya, lalu klik Create.
Salin URL HTTP untuk fungsi tersebut.
Untuk mengetahui informasi selengkapnya, termasuk cara men-deploy fungsi Cloud Run menggunakan Terraform, lihat Men-deploy fungsi Cloud Run.
Membuat tugas Cloud Scheduler
Buat tugas Cloud Scheduler yang memicu tindakan menggunakan HTTP.
Di Google Cloud konsol, buka halaman Cloud Scheduler > Jobs.
Klik Create job.
Masukkan nama untuk tugas Anda.
Di daftar Region, pilih region.
Tentukan frequency untuk tugas Anda, menggunakan format unix-cron:
30 16 * * 7Untuk mengetahui informasi selengkapnya, lihat Format tugas cron dan zona waktu.
Di daftar Timezone, pilih zona waktu.
Klik Continue.
Di daftar Target type, pilih HTTP.
Di kolom URL, masukkan URL HTTP fungsi yang sebelumnya Anda salin.
Di daftar Auth header, pilih Add OIDC token.
Di daftar Service account, pilih akun layanan yang sebelumnya Anda buat.
Di kolom Audience, masukkan URL HTTP fungsi yang sebelumnya Anda salin.
Klik Create.
Anda telah membuat tugas cron yang menjalankan fungsi Cloud Run pada pukul 16.30 pada hari Minggu.
Menjalankan tugas Cloud Scheduler
Sekarang Anda dapat menjalankan tugas yang Anda buat.
Di Google Cloud konsol, buka halaman Cloud Scheduler > Jobs.
Pilih kotak centang untuk tugas yang Anda buat.
Klik Force run.
Saat pertama kali dipanggil, tugas pertama yang dibuat dalam project dapat memerlukan waktu beberapa menit untuk dikonfigurasi dan dijalankan.
Setelah tugas berjalan, Status of last execution harus menunjukkan
Success.
Memverifikasi hasil di fungsi Cloud Run
Anda dapat memverifikasi bahwa fungsi Cloud Run berhasil dipicu dan dijalankan oleh tugas cron Anda.
Di Google Cloud konsol, buka halaman Cloud Run > Services.
Untuk memfilter daftar layanan untuk fungsi, pilih filter_list Filter > Deployment type > Function.
Klik nama fungsi.
Halaman Service details akan terbuka dan menampilkan metrik layanan.
Klik tab Logs.
Anda akan melihat entri log yang mirip dengan
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Hapus project
- Di Google Cloud konsol, buka halaman Manage resources.
- Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus resource tutorial
Di Google Cloud konsol, buka halaman Cloud Scheduler > Jobs.
Pilih kotak centang di samping tugas Anda.
Klik Delete dan konfirmasi penghapusan Anda.
Di Google Cloud konsol, buka halaman Cloud Run > Services.
Pilih kotak centang di samping layanan Anda.
Klik Delete dan konfirmasi penghapusan Anda.
Di Google Cloud konsol, buka halaman Service Accounts.
Pilih kotak centang di samping akun layanan yang Anda buat.
Klik Delete dan konfirmasi penghapusan Anda.
Langkah berikutnya
- Menggunakan Cloud Scheduler untuk memicu Cloud Run sesuai jadwal
- Menulis fungsi CloudEvents untuk menjadwalkan fungsi Anda agar merespons peristiwa dalam project Anda.