Membuat dan men-deploy Cloud Function HTTP dengan Ruby
Panduan ini akan membawa Anda melalui proses penulisan Cloud Function menggunakan runtime Ruby. Ada dua jenis Cloud Functions:
- Fungsi HTTP, yang Anda panggil dari permintaan HTTP standar.
- Fungsi yang dipicu oleh peristiwa, yang Anda gunakan untuk menangani peristiwa dari infrastruktur Cloud, seperti pesan di topik Pub/Sub, atau perubahan dalam bucket Cloud Storage.
Untuk mengetahui detail selengkapnya, baca artikel tentang menulis fungsi HTTP dan menulis fungsi berbasis peristiwa.
Sebelum memulai
- Login ke akun Google Cloud Anda. 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, dan Cloud Logging.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, dan Cloud Logging.
- Instal dan lakukan inisialisasi Google Cloud SDK..
- Update dan instal komponen
gcloud
dengan perintah berikut.gcloud components update
- Siapkan lingkungan pengembangan Anda.
Membuat fungsi
Buat direktori di sistem lokal Anda untuk kode fungsi:
Linux atau Mac OS X
mkdir ~/helloworld cd ~/helloworld
Windows
mkdir %HOMEPATH%\helloworld cd %HOMEPATH%\helloworld
Buat file
app.rb
di direktorihelloworld
dengan konten berikut:Fungsi contoh ini mengambil nama yang diberikan dalam permintaan HTTP dan menampilkan salam, atau "Halo Dunia!" jika tidak ada nama yang diberikan.
Menentukan dependensi
Dependensi pada Ruby dikelola dengan bundler dan dinyatakan dalam file bernama
Gemfile
.
Saat Anda men-deploy fungsi, Cloud Functions akan mendownload dan menginstal
dependensi yang dideklarasikan di Gemfile
dan Gemfile.lock
menggunakan bundler
.
Gemfile
mencantumkan paket yang diperlukan oleh fungsi Anda, beserta batasan versi opsional apa pun. Untuk Cloud Function, salah satu paket ini harus berupa gem functions_framework
.
Untuk latihan ini, buat file bernama Gemfile
di direktori yang sama dengan
file app.rb
yang berisi kode fungsi Anda, dengan konten berikut:
source "https://rubygems.org"
gem "functions_framework", "~> 0.7"
Jalankan perintah berikut untuk menginstal gem functions_framework
dan dependensi
lainnya:
bundle install
Membuat dan menguji fungsi secara lokal
Sebelum men-deploy fungsi, Anda dapat membuat dan mengujinya secara lokal.
Jalankan perintah berikut untuk menggunakan
functions-framework-ruby
yang dapat dieksekusi guna memulai server web lokal yang menjalankan fungsihello_http
Anda:bundle exec functions-framework-ruby --target hello_http
Uji fungsi Anda dengan membuka
http://localhost:8080
di browser atau dengan menjalankancurl localhost:8080
dari jendela lain.Lihat Mengirim permintaan ke fungsi lokal untuk mengetahui detail selengkapnya.
Lihat Menguji Functions dalam dokumentasi Ruby Functions Framework.
Men-deploy fungsi
Untuk men-deploy fungsi Anda, jalankan perintah berikut di
direktori helloworld
:
gcloud functions deploy ruby-http-function \
--gen2 \
--runtime=ruby32 \
--region=REGION \
--entry-point=hello_http \
--source=. \
--trigger-http \
--allow-unauthenticated
Ganti REGION dengan nama region Google Cloud tempat Anda ingin men-deploy fungsi
(misalnya us-west1
).
Flag --allow-unauthenticated
opsional memungkinkan Anda menjangkau fungsi
tanpa autentikasi.
Menguji fungsi yang di-deploy
Setelah fungsi di-deploy, catat properti
uri
dari output perintahgcloud functions deploy
, atau ambil dengan perintah berikut:gcloud functions describe ruby-http-function \ --region=REGION
Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya,
us-west1
).Kunjungi URL ini di browser Anda. Fungsi ini menampilkan pesan "Halo Dunia!".
Melihat log fungsi Anda
Anda dapat meninjau log fungsi dengan UI Cloud Logging atau melalui Google Cloud CLI.
Melihat log dengan alat command line
Untuk melihat log fungsi Anda dengan gcloud CLI, gunakan
perintah logs read
:
gcloud functions logs read \
--gen2 \
--limit=10 \
--region=REGION \
ruby-http-function
Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi
(misalnya us-west1
).
Outputnya akan terlihat seperti berikut:
LEVEL: I
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.477
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello__http-1" on port 8080.
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.451
LOG: I, [2023-06-01T00:09:41.451784 #1] INFO -- : FunctionsFramework: Serving function "hello_http" on port 8080...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.364
LOG: I, [2023-06-01T00:09:41.363923 #1] INFO -- : FunctionsFramework: Starting server...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.363
LOG: I, [2023-06-01T00:09:41.363855 #1] INFO -- : FunctionsFramework: Looking for function name "hello_http"...
LEVEL:
NAME: hello-http
TIME_UTC: 2023-06-01 00:09:41.354
LOG: I, [2023-06-01T00:09:41.354150 #1] INFO -- : FunctionsFramework: Loading functions from "./app.rb"...
Melihat log dengan dasbor logging
Untuk melihat log fungsi Anda dengan dasbor logging, buka Halaman Ringkasan Cloud Functions dan klik nama fungsi Anda dari daftar, lalu klik tab Log.