Anda dapat menggunakan Cloud Tasks untuk mengantrekan tugas dengan aman agar diproses secara asinkron oleh layanan Cloud Run. Kasus penggunaan yang umum mencakup:
- Mempertahankan permintaan melalui insiden produksi yang tidak terduga
- Memperlancar lonjakan traffic dengan menunda pekerjaan yang tidak ditampilkan kepada pengguna
- Mempercepat waktu respons pengguna dengan mendelegasikan operasi latar belakang yang lambat untuk ditangani oleh layanan yang lain, seperti update database atau batch processing
- Membatasi tarif panggilan untuk layanan pendukung seperti database dan API pihak ketiga
Halaman ini menunjukkan cara mengantrekan tugas yang dikirim dengan aman melalui protokol HTTPS menuju layanan Cloud Run pribadi. Panduan ini menjelaskan perilaku yang diperlukan untuk layanan Cloud Run pribadi, izin akun layanan yang diperlukan, pembuatan task queue, dan pembuatan tugas.
Sebelum memulai
Aktifkan Cloud Tasks API pada project yang Anda gunakan.
Men-deploy layanan Cloud Run untuk menangani tugas
Untuk men-deploy layanan yang menerima tugas yang dikirim ke task queue,
deploy layanan dengan cara yang sama seperti
layanan Cloud Run lainnya. Layanan Cloud Run harus menampilkan
kode 200
HTTP untuk mengonfirmasi keberhasilan setelah pemrosesan tugas selesai.
Tugas akan dikirim ke layanan Cloud Run ini sebagai permintaan HTTPS oleh Cloud Tasks.
Respons terhadap Cloud Tasks harus muncul dalam waktu tungguyang dikonfigurasi. Untuk beban kerja yang perlu berjalan lebih lama dari waktu tunggu Cloud Tasks maksimum, pertimbangkan untuk menggunakan pekerjaan Cloud Run.
Deploy dengan Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat layanan, tambahkan kode berikut ke file .tf
Anda:
Membuat antrean tugas
Command line
Untuk membuat task queue, gunakan perintah
gcloud tasks queues create QUEUE-ID
mengganti QUEUE-ID dengan nama yang ingin Anda berikan ke task queue Anda:
nama harus bersifat unik dalam project Anda. Jika Anda diminta untuk membuat aplikasi App Engine
di project Anda, respons menggunakan y
untuk membuatnya. Cloud Tasks menggunakannya
untuk antrean: pastikan Anda memilih lokasi yang sama dengan yang Anda gunakan untuk
layanan Cloud Run Anda.
Pada umumnya, konfigurasi task queue default akan berfungsi. Namun, Anda dapat secara opsional menetapkan batas kapasitas dan parameter percobaan ulang yang berbeda jika menginginkannya.
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Untuk membuat task queue, tambahkan kode berikut ke file .tf
Anda:
Terapkan perubahan dengan memasukkan terraform apply
.
Membuat akun layanan untuk dikaitkan dengan tugas
Anda harus membuat akun layanan yang akan dikaitkan dengan tugas yang diantrekan. Akun layanan ini harus memiliki peran IAM Cloud Run Invoker untuk mengizinkan task queue mengirim tugas ke 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 Tasks.
- 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.
Tambahkan berikut ini ke file .tf
:
Buat akun layanan:
Untuk Cloud Run, beri akun layanan Anda izin untuk memanggil layanan Anda:
Terapkan perubahan dengan memasukkan terraform apply
.
Membuat tugas HTTP dengan token autentikasi
Saat Anda membuat tugas untuk dikirim ke task queue, Anda menentukan project, lokasi, nama antrean, email akun layanan yang dibuat sebelumnya yang akan dikaitkan dengan tugas, URL layanan Cloud Run pribadi yang akan menjalankan tugas, dan data lain yang perlu Anda kirim. Anda dapat memilih untuk melakukan hardcode pada nilai-nilai ini, meskipun nilai seperti project ID, lokasi, dan email akun layanan dapat diambil secara dinamis dari server metadata Cloud Run.
Baca
dokumentasi Cloud Tasks API untuk mengetahui detail tentang
isi permintaan tugas.
Perhatikan bahwa permintaan yang berisi payload data harus menggunakan metode PUT
atau
POST
HTTP.
Kode yang mengantrekan tugas harus memiliki izin IAM yang diperlukan untuk melakukannya, seperti peran Penyisip Cloud Tasks. Kode Anda akan memiliki izin IAM yang diperlukan jika Anda menggunakan akun layanan default di Cloud Run.
Contoh berikut membuat permintaan tugas yang juga menyertakan pembuatan token header. Token OIDC digunakan dalam contoh. Untuk menggunakan token OAuth, ganti parameter OIDC dengan parameter OAuth yang sesuai bahasa dalam membuat permintaan.
Python
Perhatikan file requirements.txt
:
Java
Perhatikan file pom.xml
:
Go
Node.js
Perhatikan file package.json
:
Langkah selanjutnya
- Mencatat dan melihat log
- Memantau respons dan performa
- Memicu dari Pub/Sub
- Memanggil dengan HTTPS
- Menjalankan layanan sesuai jadwal