Tutorial ini menunjukkan cara menggunakan Cloud Tasks dalam aplikasi App Engine untuk memicu fungsi Cloud Run dan mengirim email terjadwal.
Tujuan
- Pahami kode di setiap komponen.
- Buat akun SendGrid.
- Download kode sumber.
- Deploy fungsi Cloud Run untuk menerima permintaan Cloud Tasks dan mengirim email melalui SendGrid API.
- Buat antrean Cloud Tasks.
- Buat akun layanan untuk mengautentikasi permintaan Cloud Tasks Anda.
- Deploy kode klien yang memungkinkan pengguna mengirim email.
Biaya
Cloud Tasks, fungsi Cloud Run, dan App Engine memiliki paket gratis, jadi selama Anda menjalankan tutorial dalam paket gratis produk tertentu, tidak akan ada biaya tambahan. Untuk mengetahui informasi selengkapnya, lihat Harga.
Sebelum memulai
Pilih atau buat Google Cloud project.
Lakukan inisialisasi aplikasi App Engine di project Anda:
Di halaman Welcome to App Engine, klik Create Application.
Pilih region untuk aplikasi Anda. Lokasi ini akan berfungsi sebagai parameter
LOCATION_ID
untuk permintaan Cloud Tasks Anda, jadi catatlah. Perhatikan bahwa dua lokasi, yang disebut europe-west dan us-central dalam perintah App Engine, masing-masing disebut europe-west1 dan us-central1 dalam perintah Cloud Tasks.Pilih Node.js untuk bahasa dan Standard untuk lingkungan.
Jika jendela pop-up Aktifkan penagihan muncul, pilih akun penagihan Anda. Jika saat ini Anda tidak memiliki akun penagihan, klik Buat akun penagihan dan ikuti panduannya.
Di halaman Mulai, klik Berikutnya. Anda akan menanganinya nanti.
Aktifkan Cloud Run Functions dan Cloud Tasks API.
Menginstal dan melakukan inisialisasi gcloud CLI.
Memahami kode
Bagian ini akan memandu Anda mempelajari kode aplikasi dan menjelaskan cara kerjanya.
Membuat tugas
Halaman indeks ditayangkan menggunakan handler di app.yaml
. Variabel yang diperlukan untuk pembuatan tugas diteruskan sebagai variabel lingkungan.
Kode ini membuat endpoint /send-email
. Endpoint ini menangani pengiriman formulir dari halaman indeks dan meneruskan data tersebut ke kode pembuatan tugas.
Kode ini benar-benar membuat tugas dan mengirimkannya ke antrean Cloud Tasks. Kode ini membangun tugas dengan:
Menentukan jenis target sebagai
HTTP Request
.Menentukan
HTTP method
yang akan digunakan danURL
target.Menetapkan header
Content-Type
keapplication/json
sehingga aplikasi hilir dapat mengurai payload terstruktur.Menambahkan email akun layanan agar Cloud Tasks dapat memberikan kredensial ke target permintaan, yang memerlukan autentikasi. Akun layanan dibuat secara terpisah.
Memeriksa untuk memastikan input pengguna untuk tanggal berada dalam batas maksimum 30 hari dan menambahkannya ke permintaan sebagai kolom
scheduleTime
.
Membuat email
Kode ini membuat fungsi Cloud Run yang menjadi target untuk permintaan Cloud Tasks. Fungsi ini menggunakan isi permintaan untuk membuat email dan mengirimkannya melalui SendGrid API.
Menyiapkan aplikasi
Menyiapkan SendGrid
Buat akun SendGrid.
- Anda dapat melakukannya secara manual melalui situs SendGrid
- Atau, Anda dapat menggunakan Google Cloud Launcher, yang akan membuat akun untuk Anda dan mengintegrasikan penagihan. Lihat Membuat akun SendGrid menggunakan Cloud Launcher.
Buat kunci API SendGrid:
Login ke akun SendGrid Anda.
Di navigasi sebelah kiri, buka Setelan, lalu klik Kunci API.
Klik Create API Key, lalu pilih akses terbatas. Di bagian header Mail Send, pilih Full Access.
Salin Kunci API saat ditampilkan (Anda hanya akan melihatnya sekali, pastikan Anda menempelkannya di suatu tempat agar dapat menggunakannya nanti).
Mendownload kode sumber
Clone repositori aplikasi contoh ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Ubah ke direktori yang berisi kode contoh:
cd cloud-tasks/
Men-deploy fungsi Cloud Run
Buka direktori
function/
:cd function/
Deploy fungsi tersebut:
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
Ganti
SENDGRID_API_KEY
dengan kunci API Anda.Perintah ini menggunakan flag:
--trigger-http
untuk menentukan jenis pemicu Cloud Run Functions.--no-allow-unauthenticated
untuk menentukan bahwa pemanggilan fungsi memerlukan autentikasi.--set-env-var
untuk menyetel kredensial SendGrid Anda
Tetapkan kontrol akses untuk fungsi agar hanya mengizinkan pengguna terautentikasi.
Pilih fungsi
sendEmail
di UI Cloud Run functions.Jika Anda tidak melihat info izin untuk
sendEmail
, klik TAMPILKAN PANEL INFO di pojok kanan atas.Klik tombol Tambahkan prinsipal di atas.
Tetapkan New principals ke
allAuthenticatedUsers
.Tetapkan Role.
- Fungsi generasi pertama (generasi ke-1): tetapkan peran ke
Cloud Function Invoker
- Fungsi generasi kedua (generasi ke-2): tetapkan peran ke
Cloud Run Invoker
- Fungsi generasi pertama (generasi ke-1): tetapkan peran ke
Klik SIMPAN.
Membuat antrean Cloud Tasks
Buat antrean menggunakan perintah
gcloud
berikut:gcloud tasks queues create my-queue --location=LOCATION
Ganti
LOCATION
dengan lokasi pilihan Anda untuk antrean, misalnya,us-west2
. Jika Anda tidak menentukan lokasi, gcloud CLI akan memilih lokasi default.Pastikan bahwa cluster berhasil dibuat:
gcloud tasks queues describe my-queue --location=LOCATION
Ganti
LOCATION
dengan lokasi antrean.
Membuat akun layanan
Permintaan Cloud Tasks harus memberikan kredensial di header Authorization
agar fungsi Cloud Run dapat mengautentikasi permintaan. Akun layanan ini memungkinkan Cloud Tasks membuat dan menambahkan token OIDC untuk tujuan tersebut.
Di UI akun layanan, klik +BUAT AKUN LAYANAN.
Tambahkan nama akun layanan(nama tampilan yang mudah diingat) dan pilih buat.
Tetapkan Peran, lalu klik Lanjutkan.
- Fungsi generasi pertama (generasi ke-1): tetapkan peran ke
Cloud Function Invoker
- Fungsi generasi kedua (generasi ke-2): tetapkan peran ke
Cloud Run Invoker
- Fungsi generasi pertama (generasi ke-1): tetapkan peran ke
Pilih Selesai.
Men-deploy endpoint dan pembuat tugas ke App Engine
Buka direktori
app/
:cd ../app/
Perbarui variabel di
app.yaml
dengan nilai Anda:Untuk menemukan lokasi antrean Anda, gunakan perintah berikut:
gcloud tasks queues describe my-queue --location=LOCATION
Ganti
LOCATION
dengan lokasi antrean.Untuk menemukan URL fungsi Anda, gunakan perintah berikut:
gcloud functions describe sendEmail
Deploy aplikasi ke lingkungan standar App Engine menggunakan perintah berikut:
gcloud app deploy
Buka aplikasi untuk mengirim kartu pos sebagai email:
gcloud app browse
Pembersihan
Setelah menyelesaikan tutorial, Anda dapat membersihkan resource yang dibuat agar resource tersebut berhenti menggunakan kuota dan dikenai biaya. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus Resource
Anda dapat membersihkan resource yang dibuat di Google Cloud sehingga tidak akan menghabiskan kuota dan Anda tidak akan ditagih untuk resource tersebut pada masa mendatang. Bagian berikut menjelaskan cara menghapus atau menonaktifkan resource ini.
Menghapus fungsi Cloud Run
Buka halaman Cloud Run functions di konsol Google Cloud .
Klik kotak centang di samping fungsi Anda.
Klik tombol Hapus di bagian atas halaman, lalu konfirmasi penghapusan.
Menghapus antrean Cloud Tasks
Buka halaman antrean Cloud Tasks di konsol.
Pilih nama antrean yang ingin Anda hapus, lalu klik Hapus antrean.
Konfirmasi tindakan yang diambil.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
- Pelajari lebih lanjut cara membuat tugas target HTTP.
- Pelajari lebih lanjut cara mengonfigurasi antrean Cloud Tasks.