Create an HTTP function

Periksa progres saya

/ 10

Create a Cloud Storage function

Periksa progres saya

/ 10

Create a Cloud Audit Logs function

Periksa progres saya

/ 10

Create a VM instance

Periksa progres saya

/ 10

Deploy different revisions

Periksa progres saya

/ 20

Set up minimum instances

Periksa progres saya

/ 20

Create a function with concurrency

Periksa progres saya

/ 20

Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.

GSP1089

Lab mandiri Google Cloud

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

  1. 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.

  2. 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.
  3. 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.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab setup and access.

  6. 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.
  7. 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. Ikon Navigation menu dan 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.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. 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.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (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

  1. 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
  1. Klik tombol Open Editor di toolbar Cloud Shell.

  2. 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!'); });
  1. 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

  1. 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.
  1. Setelah fungsi di-deploy, di menu navigasi konsol Google Cloud, buka Cloud Run dan pastikan nodejs-http-function tercantum.

memverifikasi fungsi telah di-deploy

Pengujian

  1. 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)')"
  1. 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

  1. Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/hello-storage && cd $_ touch index.js && touch package.json
  1. Klik tombol Open Editor di toolbar Cloud Shell.

  2. 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); });
  1. 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

  1. 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}}}
  1. 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.
  1. 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
  1. Setelah fungsi dan pemicu di-deploy, pastikan Anda dapat melihat nodejs-storage-function di konsol Cloud Run.

dua fungsi

Pengujian

  1. 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
  1. 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 1

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

log audit 2

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.

  1. Dari Navigation menu, buka IAM & Admin > Audit Logs.
Catatan: Anda dapat mengabaikan peringatan izin resourcemanager.folders.getIamPolicy yang tidak ada.
  1. Temukan Compute Engine API, lalu klik kotak centang di sampingnya. Jika Anda tidak dapat menemukan API tersebut, cari di halaman berikutnya.

  2. Di panel info di sebelah kanan, centang kotak untuk jenis log Admin Read, Data Read, dan Data Write, lalu klik Save.

centang admin read, data read, data write

  1. 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

  1. Jalankan kode berikut untuk meng-clone repositori yang berisi aplikasi:
cd ~ git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git
  1. Klik tombol Open Editor di toolbar Cloud Shell.

  2. 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

  1. Di terminal Cloud Shell, jalankan perintah berikut untuk membuka direktori aplikasi:
cd ~/eventarc-samples/gce-vm-labeler/gcf/nodejs
  1. 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
  1. 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.)

  1. Dari Navigation menu, buka Compute Engine > VM instances.

  2. Klik Create Instance, tetapkan Name instance sebagai instance-1 dan Zone sebagai .

  3. 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.

label creator

  1. 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

  1. 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

  1. Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/hello-world-colored && cd $_ touch main.py touch requirements.txt
  1. 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

  1. 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:

hello world oranye

  1. Buka halaman Cloud Run di konsol, lalu klik layanan hello-world-colored.

  2. Klik Edit & Deploy New Revision.

  3. 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.

revisi fungsi

  1. 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:

hello world 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

  1. Jalankan perintah berikut untuk membuat folder dan file aplikasi, lalu buka folder tersebut:
mkdir ~/min-instances && cd $_ touch main.go touch go.mod
  1. 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!") }
  1. 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

  1. 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
  1. 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:

  1. Buka halaman Cloud Run di konsol, lalu klik layanan slow-function.

  2. Klik Edit & Deploy New Revision.

  3. Di bagian Revision scaling, tetapkan Minimum number of instances ke 1 dan Maximum number of instances ke 4.

  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

  1. Gunakan perintah berikut untuk menginstal hey di Cloud Shell:
sudo apt install hey
  1. 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)")
  1. 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.

grafik instance aktif

  1. 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.

  1. Dari Navigation menu, buka Cloud Run.

  2. Klik layanan slow-concurrent-function.

  3. Klik Edit & Deploy New Revision.

  4. Di bagian Resources, tetapkan CPU ke 1.

  5. Di bagian Requests, tetapkan Maximum concurrent requests per instance ke 100.

  6. Di bagian Revision scaling, tetapkan Maximum number of instances ke 4.

  7. Biarkan kolom lainnya terisi dengan nilai default-nya, lalu klik Deploy.

Menguji dengan konkurensi

  1. 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)")
  1. 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.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Menggunakan jendela Samaran atau browser pribadi adalah cara terbaik untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.