GSP1089
Ringkasan
Cloud Run Functions merupakan penawaran Functions-as-a-Service dari Google Cloud. Cloud Run Functions disertai dengan set fitur lanjutan dan didukung oleh Cloud Run dan Eventarc, sehingga memberi Anda kontrol yang lebih canggih atas performa dan skalabilitas, serta kontrol lebih besar atas pemicu dan runtime fungsi dari +90 sumber peristiwa.
Di lab ini, Anda akan membuat fungsi Cloud Run yang merespons panggilan HTTP serta dipicu oleh peristiwa Cloud Storage dan Cloud Audit Logs. Anda juga akan men-deploy beberapa revisi dari sebuah fungsi Cloud Run dan mempelajari setelan baru.
Apa yang baru?
Cloud Run Functions versi baru ini memberikan pengalaman FaaS yang lebih baik serta didukung oleh Cloud Run, Cloud Build, Artifact Registry, dan Eventarc.
Infrastruktur yang Lebih Baik
-
Pemrosesan permintaan lebih lama: Jalankan fungsi Cloud Run Anda selama lebih dari 5 menit yang merupakan durasi default-nya, sehingga akan memudahkan Anda menjalankan workload permintaan yang membutuhkan waktu lebih lama, misalnya memproses aliran data yang besar dari Cloud Storage atau BigQuery. Untuk fungsi HTTP, waktu pemrosesan ini hingga 60 menit. Untuk fungsi yang dipicu peristiwa, waktu pemrosesan ini hingga 10 menit.
-
Instance yang lebih besar: Manfaatkan RAM hingga 16 GB dan 4 vCPU di Cloud Run Functions, sehingga Anda dapat memproses workload paralel dalam memori yang lebih besar, sarat komputasi, dan lebih banyak.
-
Konkurensi: Proses hingga 1.000 permintaan serentak dengan satu instance fungsi, sehingga akan meminimalkan cold start dan memperbaiki latensi saat penskalaan.
-
Instance minimum: Sediakan instance yang sudah melewati pra-penyiapan sehingga akan mengurangi cold start dan memastikan waktu bootstrap aplikasi Anda tidak memengaruhi performa aplikasi.
-
Pemisahan traffic: Dukung beberapa versi fungsi Anda, bagi traffic di antara versi-versi yang berbeda, dan roll back fungsi Anda ke versi sebelumnya.
Cakupan Peristiwa yang lebih luas dan dukungan CloudEvents
-
Integrasi Eventarc: Cloud Run Functions kini menyertakan dukungan native untuk Eventarc, yang menghadirkan lebih dari 125 sumber peristiwa menggunakan log Cloud Audit (BigQuery, Cloud SQL, Cloud Storage...), dan tentu saja Cloud Run Functions masih mendukung peristiwa dari sumber kustom dengan memublikasikan langsung ke Cloud Pub/Sub.
-
Format CloudEvent: Semua fungsi berbasis peristiwa mematuhi CloudEvents standar industri (cloudevents.io), apa pun sumbernya, untuk memastikan pengalaman yang konsisten bagi developer. Payload dikirim melalui CloudEvent terstruktur dengan payload cloudevent.data dan menerapkan standar CloudEvent.
Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:
- Menulis fungsi yang merespons panggilan HTTP.
- Menulis fungsi yang merespons peristiwa Cloud Storage.
- Menulis fungsi yang merespons Cloud Audit Logs.
- Men-deploy beberapa revisi dari sebuah fungsi Cloud Run.
- Menghilangkan cold start dengan instance minimum.
- Menyiapkan konkurensi.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Konsol Google Cloud
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kanan terdapat panel Lab setup and access yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Kredensial sementara (nama pengguna dan sandi) yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
Perhatikan bahwa timer lab terletak di dekat bagian atas halaman, yang menampilkan waktu yang tersisa.
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab setup and access.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab setup and access.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Penggunaan akun Google Cloud sendiri untuk lab ini mungkin dikenai biaya tambahan.
-
Klik untuk melanjutkan ke halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan daftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Mengaktifkan API
Sebelum membuat fungsi Cloud Run, Anda harus mengaktifkan API yang relevan.
- Jalankan perintah berikut untuk mengaktifkan semua layanan yang diperlukan
gcloud services enable \
artifactregistry.googleapis.com \
cloudfunctions.googleapis.com \
cloudbuild.googleapis.com \
eventarc.googleapis.com \
run.googleapis.com \
logging.googleapis.com \
pubsub.googleapis.com \
cloudquotas.googleapis.com \
monitoring.googleapis.com
Tugas 2. Membuat fungsi HTTP
Untuk fungsi pertama, Anda akan membuat fungsi Node.js terautentikasi yang merespons permintaan HTTP, dan menggunakan waktu tunggu 10 menit untuk menunjukkan bahwa fungsi bisa memiliki waktu lebih lama untuk merespons permintaan HTTP.
Membuat
- Di terminal Cloud Shell, jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/hello-http && cd $_
touch index.js && touch package.json
-
Klik tombol Open Editor di toolbar Cloud Shell.
-
Tambahkan kode berikut ke file hello-http/index.js yang hanya merespons permintaan HTTP:
const functions = require('@google-cloud/functions-framework');
functions.http('helloWorld', (req, res) => {
res.status(200).send('HTTP with Node.js in GCF 2nd gen!');
});
- Tambahkan konten berikut ke file
hello-http/package.json untuk menentukan dependensi.
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
Deploy
- Di terminal Cloud Shell, jalankan perintah berikut untuk men-deploy fungsi:
gcloud run deploy nodejs-http-function \
--source . \
--function helloWorld \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--timeout 600s \
--max-instances 1 \
--no-allow-unauthenticated
Catatan: Jika Anda menerima permissions error, tunggu beberapa menit, lalu coba lakukan deployment lagi. Diperlukan waktu beberapa menit hingga API aktif.
Flag yang digunakan dalam perintah ini meliputi:
-
--source .: menginstruksikan Cloud Run untuk membangun fungsi ke dalam image container menggunakan buildpack.
-
--function helloWorld: menetapkan titik entri fungsi yang akan dipanggil.
-
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}}: menentukan image dasar runtime dan mengaktifkan update image dasar otomatis untuk perbaikan keamanan.
-
--timeout 600s: memungkinkan fungsi memiliki waktu tunggu lebih lama (600 detik) untuk merespons permintaan HTTP.
-
--max-instances 1: menetapkan jumlah maksimum instance ke 1.
-
--no-allow-unauthenticated: memastikan fungsi memerlukan autentikasi.
- Setelah fungsi di-deploy, di menu navigasi konsol Google Cloud, buka Cloud Run dan pastikan
nodejs-http-function tercantum.

Pengujian
- Di Cloud Shell, ambil URL layanan fungsi Anda dan simpan dalam variabel lingkungan:
SERVICE_URL="$(gcloud run services describe nodejs-http-function --region {{{project_0.default_region|Region}}} --format 'value(status.url)')"
- Uji fungsi HTTP yang diautentikasi dengan meneruskan token identitas Anda di header otorisasi:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL
Anda akan melihat pesan berikut sebagai respons:
HTTP with Node.js in GCF 2nd gen!
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi HTTP
Tugas 3. Membuat fungsi Cloud Storage
Di bagian ini, Anda akan membuat fungsi Node.js yang merespons peristiwa dari bucket Cloud Storage menggunakan pemicu Eventarc.
Menyiapkan
- Jalankan perintah berikut untuk memberikan peran IAM yang diperlukan ke akun layanan Cloud Storage dan Compute Engine:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gcloud storage service-agent --project="$PROJECT_NUMBER" | xargs)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$SERVICE_ACCOUNT \
--role roles/pubsub.publisher
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Membuat
- Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/hello-storage && cd $_
touch index.js && touch package.json
-
Klik tombol Open Editor di toolbar Cloud Shell.
-
Tambahkan kode berikut ke file hello-storage/index.js yang hanya merespons peristiwa Cloud Storage:
const functions = require('@google-cloud/functions-framework');
functions.cloudEvent('helloStorage', (cloudevent) => {
console.log('Cloud Storage event with Node.js in GCF 2nd gen!');
console.log(cloudevent);
});
- Tambahkan konten berikut ke file
hello-storage/package.json untuk menentukan dependensi:
{
"name": "nodejs-functions-gen2-codelab",
"version": "0.0.1",
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^2.0.0"
}
}
Deploy
- Pertama, jalankan perintah berikut untuk membuat bucket Cloud Storage yang akan digunakan membuat peristiwa:
export BUCKET_NAME="gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gcloud storage buckets create gs://$BUCKET_NAME --location={{{project_0.default_region|Region}}}
- Jalankan perintah berikut untuk men-deploy fungsi Cloud Run:
gcloud run deploy nodejs-storage-function \
--source . \
--function helloStorage \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--max-instances 1 \
--no-allow-unauthenticated
Catatan: Seperti sebelumnya, jika Anda menerima permissions error, tunggu beberapa menit, lalu coba lakukan deployment lagi. Diperlukan waktu beberapa menit hingga API aktif.
- Sekarang, buat pemicu Eventarc untuk merutekan peristiwa pembuatan objek Cloud Storage ke fungsi yang di-deploy:
gcloud eventarc triggers create nodejs-storage-function-trigger \
--location={{{project_0.default_region|Region}}} \
--destination-run-service=nodejs-storage-function \
--destination-run-region={{{project_0.default_region|Region}}} \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=$BUCKET_NAME" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Setelah fungsi dan pemicu di-deploy, pastikan Anda dapat melihat
nodejs-storage-function di konsol Cloud Run.

Pengujian
- Jalankan perintah berikut untuk mengupload file ke bucket guna menguji fungsi:
echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt
- Jalankan perintah berikut untuk membaca log layanan. Anda akan melihat CloudEvent yang diterima di log:
gcloud run services logs read nodejs-storage-function \
--region {{{project_0.default_region|Region}}} --limit=100
Catatan: Mungkin perlu waktu satu menit untuk membuat log.
Anda akan melihat output yang mirip dengan yang berikut.
Output:
}
traceparent: '00-c74cb472d1e78f7225b6f617a31d9c08-96f0380bb62be2c1-01'
},
etag: 'CKOx1L3wofoCEAE='
crc32c: 'R1jUOQ==',
mediaLink: 'https://storage.googleapis.com/download/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt?generation=1663625646643363&alt=media',
md5Hash: '5Z/5eUEET4XfUpfhwwLSYA==',
size: '12',
timeStorageClassUpdated: '2022-09-19T22:14:06.657Z',
storageClass: 'STANDARD',
updated: '2022-09-19T22:14:06.657Z',
timeCreated: '2022-09-19T22:14:06.657Z',
contentType: 'text/plain',
metageneration: '1',
generation: '1663625646643363',
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
name: 'random.txt',
selfLink: 'https://www.googleapis.com/storage/v1/b/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/o/random.txt',
id: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb/random.txt/1663625646643363',
kind: 'storage#object',
data: {
bucket: 'gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
time: '2022-09-19T22:14:06.657124Z',
subject: 'objects/random.txt',
type: 'google.cloud.storage.object.v1.finalized',
specversion: '1.0',
source: '//storage.googleapis.com/projects/_/buckets/gcf-gen2-storage-qwiklabs-gcp-00-101b4b9ca9bb',
id: '5693030851428996',
{
Cloud Storage event with Node.js in GCF 2nd gen!
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi Cloud Storage
Tugas 4. Membuat fungsi Cloud Audit Logs
Di bagian ini, Anda akan membuat fungsi Node.js yang menerima peristiwa Cloud Audit Log saat instance VM Compute Engine dibuat. Sebagai respons, fungsi ini menambahkan label pada VM yang baru dibuat untuk mencantumkan pembuatnya.
Menentukan VM Compute Engine yang baru dibuat
Compute Engine menerbitkan 2 Log Audit saat VM dibuat.
Log Audit pertama diterbitkan di awal pembuatan VM dan terlihat seperti ini:

Log Audit kedua diterbitkan setelah VM dibuat dan terlihat seperti ini:

Perhatikan kolom operasi dengan nilai first: true dan last: true. Log Audit kedua berisi semua informasi yang Anda butuhkan untuk melabeli instance, karena itu Anda menggunakan flag last: true untuk mendeteksinya di fungsi Cloud Run.
Menyiapkan
Untuk menggunakan fungsi Cloud Audit Log, Anda harus mengaktifkan Log Audit untuk Eventarc. Anda juga perlu menggunakan akun layanan dengan peran eventarc.eventReceiver.
- Dari Navigation menu, buka IAM & Admin > Audit Logs.
Catatan: Anda dapat mengabaikan peringatan izin resourcemanager.folders.getIamPolicy yang tidak ada.
-
Temukan Compute Engine API, lalu klik kotak centang di sampingnya. Jika Anda tidak dapat menemukan API tersebut, cari di halaman berikutnya.
-
Di panel info di sebelah kanan, centang kotak untuk jenis log Admin Read, Data Read, dan Data Write, lalu klik Save.

- Berikan peran IAM
eventarc.eventReceiver kepada akun layanan Compute Engine default:
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
--member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role roles/eventarc.eventReceiver
Mendapatkan kode
- Jalankan kode berikut untuk meng-clone repositori yang berisi aplikasi:
cd ~
git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
-
Klik tombol Open Editor di toolbar Cloud Shell.
-
Di file Explorer, buka eventarc-samples > gce-vm-labeler > gcf > nodejs dan buka index.js.
File index.js berisi kode aplikasi yang menerima Log Audit dalam format CloudEvent Kode aplikasi ini selanjutnya mengekstrak detail instance VM Compute Engine dan menetapkan label pada instance VM tersebut. Anda dapat mempelajari index.js secara lebih mendetail.
Deploy
- Di terminal Cloud Shell, jalankan perintah berikut untuk membuka direktori aplikasi:
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
- Jalankan perintah berikut untuk men-deploy fungsi Cloud Run:
gcloud run deploy gce-vm-labeler \
--source . \
--function labelVmCreation \
--base-image {{{project_0.startup_script.node_gcp_runtime | node_gcp_runtime}}} \
--region {{{project_0.default_region|Region}}} \
--max-instances 1 \
--no-allow-unauthenticated
- Buat pemicu Eventarc untuk memfilter Log Audit pada penyisipan instance Compute Engine:
gcloud eventarc triggers create gce-vm-labeler-trigger \
--location={{{project_0.default_region|Region}}} \
--destination-run-service=gce-vm-labeler \
--destination-run-region={{{project_0.default_region|Region}}} \
--event-filters="type=google.cloud.audit.log.v1.written" \
--event-filters="serviceName=compute.googleapis.com" \
--event-filters="methodName=beta.compute.instances.insert" \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Catatan: Meskipun pemicu fungsi Log Audit Anda langsung dibuat, diperlukan waktu hingga 10 menit agar pemicu berfungsi sepenuhnya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi Cloud Audit Logs
Pengujian
Untuk menguji fungsi Audit Log, Anda perlu membuat VM Compute Engine di Konsol Cloud. (Anda juga dapat membuat VM dengan gcloud, tetapi tampaknya tidak akan menghasilkan Log Audit.)
-
Dari Navigation menu, buka Compute Engine > VM instances.
-
Klik Create Instance, tetapkan Name instance sebagai instance-1 dan Zone sebagai .
-
Biarkan semua kolom lainnya terisi dengan nilai default-nya, lalu klik Create.
Setelah pembuatan VM selesai, Anda akan melihat label creator ditambahkan di VM pada Konsol Cloud di bagian Basic information.

- Verifikasi menggunakan perintah berikut:
gcloud compute instances describe instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Anda akan melihat label di output seperti dalam contoh berikut.
Contoh output:
...
labelFingerprint: ULU6pAy2C7s=
labels:
creator: student-02-19b599a0f901
...
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat instance VM
- Jalankan perintah berikut untuk menghapus VM. Ketik
Y, saat diminta, untuk mengonfirmasi.
gcloud compute instances delete instance-1 --zone {{{project_0.default_zone | "Zone"}}}
Tugas 5. Men-deploy revisi yang berbeda
Cloud Run Functions mendukung beberapa revisi dari fungsi Anda, dengan membagi traffic di antara revisi-revisi berbeda dan me-roll back fungsi ke versi sebelumnya. Di bagian ini, Anda akan men-deploy dua revisi dari fungsi Cloud Run Anda.
Membuat
- Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/hello-world-colored && cd $_
touch main.py
touch requirements.txt
- Tambahkan kode berikut ke file
hello-world-colored/main.py dengan fungsi Python yang membaca variabel lingkungan warna dan merespons dengan Hello World dalam warna latar belakang tersebut:
import os
color = os.environ.get('COLOR')
def hello_world(request):
return f'<body style="background-color:{color}"><h1>Hello World!</h1></body>'
Deploy
- Jalankan perintah berikut untuk men-deploy revisi pertama fungsi dengan latar belakang oranye:
COLOR=orange
gcloud run deploy hello-world-colored \
--source . \
--function hello_world \
--base-image python311 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--update-env-vars COLOR=$COLOR \
--max-instances 1
Pada tahap ini, jika Anda menguji fungsi dengan membuka URL Layanan (output URI dari perintah deployment yang dieksekusi sebelumnya) di browser, Anda akan melihat Hello World dengan latar belakang oranye:

-
Buka halaman Cloud Run di konsol, lalu klik layanan hello-world-colored.
-
Klik Edit & Deploy New Revision.
-
Biarkan semuanya tetap dalam nilai default-nya, scroll ke bawah, lalu pilih tab Variables & Secrets. Di bagian Environment Variables, ubah variabel lingkungan COLOR ke yellow.

- Klik Deploy.
Karena ini adalah revisi terbaru, jika Anda menguji fungsi ini dengan membuka URL Layanan di browser, Anda akan melihat Hello World dengan latar belakang kuning:

Klik Periksa progres saya untuk memverifikasi tujuan.
Men-deploy revisi yang berbeda
Tugas 6. Menyiapkan instance minimum
Di Cloud Run Functions, Anda dapat menentukan jumlah minimum instance fungsi yang harus tetap aktif dan siap melayani permintaan. Hal ini berguna untuk membatasi jumlah cold start. Di bagian ini, Anda akan men-deploy fungsi dengan inisialisasi yang lambat. Anda mengamati masalah cold start. Kemudian, Anda men-deploy fungsi dengan nilai instance minimum ditetapkan ke 1 untuk menghilangkan cold start.
Membuat
- Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/min-instances && cd $_
touch main.go
touch go.mod
- Tambahkan kode berikut ke file
min-instances/main.go. Layanan Go ini memiliki fungsi init yang tidur selama 10 detik untuk menyimulasikan inisialisasi yang panjang. Layanan ini juga memiliki fungsi HelloWorld yang merespons panggilan HTTP:
package p
import (
"fmt"
"net/http"
"time"
)
func init() {
time.Sleep(10 * time.Second)
}
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Slow HTTP Go in GCF 2nd gen!")
}
- Tambahkan kode berikut ke file
min-instances/go.mod. Kode ini menentukan jalur modul dan versi bahasa Go:
module example.com/mod
go 1.26
Deploy
- Jalankan perintah berikut untuk men-deploy revisi pertama fungsi dengan nilai instance minimum default, yakni nol:
gcloud run deploy slow-function \
--source . \
--function HelloWorld \
--base-image go126 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--max-instances 4
- Uji fungsi dengan perintah berikut:
SLOW_URL="$(gcloud run services describe slow-function --region {{{project_0.default_region|Region}}} --format 'value(status.url)')"
curl $SLOW_URL
Anda akan melihat penundaan 10 detik (cold start) pada panggilan pertama, lalu melihat pesan. Panggilan berikutnya akan langsung ditampilkan:
Slow HTTP Go in GCF 2nd gen!
Menetapkan instance minimum
Untuk menghilangkan cold start pada permintaan pertama, deploy ulang fungsi dengan flag --min-instances ditetapkan ke 1 sebagai berikut:
-
Buka halaman Cloud Run di konsol, lalu klik layanan slow-function.
-
Klik Edit & Deploy New Revision.
-
Di bagian Revision scaling, tetapkan Minimum number of instances ke 1 dan Maximum number of instances ke 4.
-
Biarkan kolom lainnya terisi dengan nilai default-nya, lalu klik Deploy.
Pengujian
- Jalankan perintah berikut untuk menguji fungsi lagi:
curl $SLOW_URL
Anda tidak akan melihat penundaan 10 detik lagi dalam permintaan pertama. Masalah cold start untuk pemanggilan pertama (setelah lama tidak ada) sudah tidak muncul lagi, berkat instance minimum. Lihat dokumentasi menggunakan instance minimum untuk mengetahui informasi selengkapnya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Menyiapkan instance minimum
Tugas 7. Membuat fungsi dengan konkurensi
Di Cloud Run Functions, instance fungsi menangani satu permintaan serentak secara default, tetapi Anda dapat menentukan jumlah permintaan serentak yang dapat diproses secara bersamaan oleh sebuah instance. Hal ini juga dapat berguna untuk mencegah cold start karena instance fungsi baru tidak perlu dibuat untuk setiap permintaan paralel.
Di bagian ini, Anda akan menggunakan fungsi dengan inisialisasi lambat dari langkah sebelumnya. Anda mengirimkan 10 permintaan dan melihat masalah cold start muncul lagi ketika instance fungsi baru perlu dibuat untuk menangani permintaan tersebut.
Untuk memperbaiki masalah cold start ini, Anda men-deploy fungsi lain dengan nilai konkurensi 100. Anda akan melihat bahwa 10 permintaan tersebut kini tidak menyebabkan masalah cold start dan satu instance fungsi dapat menangani semua permintaan.
Menguji tanpa konkurensi
- Gunakan perintah berikut untuk menginstal
hey di Cloud Shell:
sudo apt install hey
- Jalankan perintah berikut untuk mendapatkan URL fungsi dan menyimpannya sebagai variabel lingkungan:
SLOW_URL=$(gcloud run services describe slow-function --region {{{project_0.default_region|Region}}} --format="value(status.url)")
- Gunakan alat tolok ukur open source bernama
hey untuk mengirim 10 permintaan serentak ke fungsi yang lambat:
hey -n 10 -c 10 $SLOW_URL
Anda akan melihat di dalam output hey bahwa beberapa permintaan membutuhkan waktu yang lama.
Output:
Summary:
Total: 10.9053 secs
Slowest: 10.9048 secs
Fastest: 0.4439 secs
Average: 9.7930 secs
Requests/sec: 0.9170
Total data: 310 bytes
Size/request: 31 bytes
Response time histogram:
0.444 [1] |■■■■
1.490 [0] |
2.536 [0] |
3.582 [0] |
4.628 [0] |
5.674 [0] |
6.720 [0] |
7.767 [0] |
8.813 [0] |
9.859 [0] |
10.905 [9] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Hal ini terjadi karena lebih banyak instance fungsi dibuat untuk menangani permintaan. Jika Anda memeriksa jumlah instance aktif untuk fungsi tersebut, Anda juga akan melihat bahwa lebih dari satu instance dibuat pada suatu titik dan instance tersebut menyebabkan masalah cold start.

- Jalankan perintah berikut untuk menghapus fungsi. Ketik
Y, saat diminta, untuk mengonfirmasi:
gcloud run services delete slow-function --region {{{project_0.default_region | "Region"}}}
Deploy
- Jalankan perintah berikut untuk men-deploy fungsi baru yang identik dengan fungsi sebelumnya. Setelah di-deploy, Anda dapat meningkatkan konkurensinya:
gcloud run deploy slow-concurrent-function \
--source . \
--function HelloWorld \
--base-image go126 \
--region {{{project_0.default_region|Region}}} \
--allow-unauthenticated \
--min-instances 1 \
--max-instances 4
Menetapkan konkurensi
Sekarang, Anda menetapkan konkurensi layanan Cloud Run pokok untuk fungsi tersebut menjadi 100 (dapat mencapai maksimum 1000). Hal ini memastikan bahwa setidaknya 100 permintaan dapat ditangani oleh satu instance fungsi.
-
Dari Navigation menu, buka Cloud Run.
-
Klik layanan slow-concurrent-function.
-
Klik Edit & Deploy New Revision.
-
Di bagian Resources, tetapkan CPU ke 1.
-
Di bagian Requests, tetapkan Maximum concurrent requests per instance ke 100.
-
Di bagian Revision scaling, tetapkan Maximum number of instances ke 4.
-
Biarkan kolom lainnya terisi dengan nilai default-nya, lalu klik Deploy.
Menguji dengan konkurensi
- Setelah fungsi Anda di-deploy, jalankan perintah berikut untuk mendapatkan URL fungsi baru dan menyimpannya sebagai variabel lingkungan:
SLOW_CONCURRENT_URL=$(gcloud run services describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --format="value(status.url)")
- Sekarang gunakan
hey untuk mengirim 10 permintaan serentak:
hey -n 10 -c 10 $SLOW_CONCURRENT_URL
Anda akan melihat di dalam output hey bahwa semua permintaan diproses dengan cepat.
Output:
Summary:
Total: 0.0652 secs
Slowest: 0.0651 secs
Fastest: 0.0619 secs
Average: 0.0636 secs
Requests/sec: 153.3751
Total data: 280 bytes
Size/request: 28 bytes
Response time histogram:
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.062 [1] |■■■■■■■■■■■■■■■■■■■■
0.063 [0] |
0.063 [0] |
0.063 [0] |
0.063 [1] |■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.064 [2] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0.065 [0] |
0.065 [1] |■■■■■■■■■■■■■■■■■■■■
Satu instance fungsi dapat menangani semua permintaan dan masalah cold start hilang berkat peningkatan konkurensi. Lihat dokumentasi konkurensi untuk mengetahui informasi selengkapnya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi dengan konkurensi
Selamat
Di lab ini, Anda telah men-deploy beberapa fungsi Cloud Run yang merespons panggilan HTTP, peristiwa Cloud Storage, dan Cloud Audit Logs. Kemudian, Anda men-deploy beberapa revisi dari layanan Cloud Run yang menjalankan fungsi tersebut dan menetapkan nilai konkurensi serta menghilangkan cold start dengan instance minimum.
Langkah berikutnya/Pelajari lebih lanjut
Untuk mengetahui informasi selengkapnya tentang Cloud Run Functions, pelajari referensi berikut:
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 19 Agustus 2026
Lab Terakhir Diuji pada 19 Agustus 2026
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.