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 Google Cloud Console
- 
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut: 
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
 
- 
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 Details. 
- 
Klik Next. 
- 
Salin Password di bawah dan tempel ke dialog Welcome. {{{user_0.password | "Password"}}}Anda juga dapat menemukan Password di panel Lab Details. 
- 
Klik Next. Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. 
 
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
- 
Klik halaman berikutnya: 
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar 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. 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 projectOutput:
[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.comMengaktifkan Gemini Code Assist di Cloud Shell IDE
Anda dapat menggunakan Gemini Code Assist di lingkungan pengembangan terintegrasi (IDE) seperti Cloud Shell untuk menerima panduan tentang kode atau menyelesaikan masalah dengan kode Anda. Sebelum mulai menggunakan Gemini Code Assist, Anda perlu mengaktifkannya.
- Di Cloud Shell, aktifkan Gemini for Google Cloud API dengan perintah berikut:
gcloud services enable cloudaicompanion.googleapis.com
- Klik Open Editor di toolbar Cloud Shell.
Catatan: Untuk membuka Cloud Shell Editor, klik Open Editor di toolbar Cloud Shell. Anda dapat beralih antara Cloud Shell dan Editor kode dengan mengklik Open Editor atau Open Terminal, sesuai kebutuhan.
- 
Di panel kiri, klik ikon Settings, lalu di tampilan Settings, cari Gemini Code Assist. 
- 
Temukan dan pastikan kotak centang dipilih untuk Geminicodeassist: Enable, lalu tutup Settings. 
- 
Klik Cloud Code - No Project di status bar di bagian bawah layar. 
- 
Berikan otorisasi pada plugin seperti yang ditunjukkan. Jika project tidak dipilih secara otomatis, klik Select a Google Cloud Project, lalu pilih . 
- 
Pastikan project Google Cloud Anda () ditampilkan dalam pesan status Cloud Code di status bar. 
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.jsyang 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.jsonuntuk menentukan dependensi.
{
  "name": "nodejs-functions-gen2-codelab",
  "version": "0.0.1",
  "main": "index.js",
  "dependencies": {
    "@google-cloud/functions-framework": "^2.0.0"
  }
}
- 
Di file Explorer, buka file index.js. Tindakan ini mengaktifkan Gemini Code Assist, sebagaimana ditunjukkan oleh keberadaan ikon di sudut kanan atas editor. di sudut kanan atas editor.
 
- 
Klik ikon Gemini Code Assist: Smart Actions  , lalu pilih Explain this. , lalu pilih Explain this.
 
- 
Gemini Code Assist akan membuka panel chat dengan perintah yang telah diisi sebelumnya, yakni Explain this. Di kotak teks inline chat Code Assist, ganti perintah yang sudah terisi dengan perintah berikut, lalu klik Send:
 
You are an expert Cloud Developer at Cymbal AI. A new team member is unfamiliar with this Cloud Function implementation. Explain the "index.js" and "package.json" files within the "hello-http" folder in detail, breaking down their key components used in the application code.
For the suggested improvements, don't update these files.Penjelasan mendetail untuk kode index.js dan package.json akan muncul di chat Gemini Code Assist.
Men-deploy
- Di terminal Cloud Shell, jalankan perintah berikut untuk men-deploy fungsi dan masukkan yuntuk pop-up unauthenticated invocations:
gcloud functions deploy nodejs-http-function \
  --gen2 \
  --runtime nodejs22 \
  --entry-point helloWorld \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-http \
  --timeout 600s \
  --max-instances 1
Catatan: Jika Anda mendapatkanerror izin, tunggu beberapa menit, lalu coba lakukan deployment lagi. Diperlukan waktu beberapa menit hingga API aktif.
Meskipun tidak mutlak diperlukan untuk langkah ini, ada batas waktu tunggu 600 detik. Hal ini memungkinkan fungsi memiliki waktu tunggu lebih lama untuk merespons permintaan HTTP.
- Setelah fungsi di-deploy, masukkan Cloud Run functions di kotak penelusuran, lalu klik hasilnya. Anda akan dialihkan ke konsol Cloud Run. Pastikan fungsi berhasil di-deploy.

Menguji
- Uji fungsi dengan perintah berikut:
gcloud functions call nodejs-http-function \
  --gen2 --region {{{project_0.default_region|Region}}}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.
Menyiapkan
- Untuk menggunakan fungsi Cloud Storage, jalankan kode berikut terlebih dahulu untuk memberikan peran IAM pubsub.publisherkepada akun layanan Cloud Storage:
PROJECT_NUMBER=$(gcloud projects list --filter="project_id:{{{ project_0.project_id | PROJECT_ID }}}" --format='value(project_number)')
SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding {{{ project_0.project_id | PROJECT_ID }}} \
  --member serviceAccount:$SERVICE_ACCOUNT \
  --role roles/pubsub.publisherMembuat
- 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.jsyang 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.jsonuntuk menentukan dependensi:
{
  "name": "nodejs-functions-gen2-codelab",
  "version": "0.0.1",
  "main": "index.js",
  "dependencies": {
    "@google-cloud/functions-framework": "^2.0.0"
  }
}
- 
Di file Explorer, buka file index.jsdalam folder "hello-storage". Tindakan ini mengaktifkan Gemini Code Assist, sebagaimana ditunjukkan oleh keberadaan ikon di sudut kanan atas editor. di sudut kanan atas editor.
 
- 
Klik ikon Gemini Code Assist: Smart Actions  , lalu pilih Explain this. , lalu pilih Explain this.
 
- 
Gemini Code Assist akan membuka panel chat dengan perintah yang telah diisi sebelumnya, yakni Explain this. Di kotak teks inline chat Code Assist, ganti perintah yang sudah terisi dengan perintah berikut, lalu klik Send:
 
You are an expert Cloud Developer at Cymbal AI. A new team member is unfamiliar with this Cloud Function implementation. Explain the "index.js" and "package.json" files within the "hello-storage" folder in detail, breaking down their key components used in the application code.
For the suggested improvements, don't update these files.Penjelasan mendetail untuk kode index.js dan package.json akan muncul di chat Gemini Code Assist.
Men-deploy
- Pertama, jalankan perintah berikut untuk membuat bucket Cloud Storage yang akan digunakan membuat peristiwa:
BUCKET="gs://gcf-gen2-storage-{{{ project_0.project_id | PROJECT_ID }}}"
gsutil mb -l {{{project_0.default_region|Region}}} $BUCKET
- Jalankan perintah berikut untuk men-deploy fungsi:
gcloud functions deploy nodejs-storage-function \
  --gen2 \
  --runtime nodejs22 \
  --entry-point helloStorage \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-bucket $BUCKET \
  --trigger-location {{{project_0.default_region|Region}}} \
  --max-instances 1
Catatan: Seperti sebelumnya, jika Anda mendapatkanerror izin, tunggu beberapa menit, lalu coba lakukan deployment lagi. Diperlukan waktu beberapa menit hingga API aktif.
- Setelah fungsi di-deploy, pastikan Anda dapat melihatnya di konsol Cloud Run.

Menguji
- Jalankan perintah berikut yang mengupload file ke bucket untuk menguji fungsi:
echo "Hello World" > random.txt
gsutil cp random.txt $BUCKET/random.txt
- Jalankan perintah berikut. Anda akan melihat CloudEvent yang diterima di log:
gcloud functions logs read nodejs-storage-function \
  --region {{{project_0.default_region|Region}}} --gen2 --limit=100 --format "value(log)"
Catatan: Mungkin diperlukan 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, label ditambahkan ke VM yang baru dibuat, yang menyebutkan pembuat VM tersebut.
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 izinresourcemanager.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.eventReceiverkepada 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.eventReceiverMendapatkan 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 > index.js. 
- 
Buka file index.js. Tindakan ini mengaktifkan Gemini Code Assist, sebagaimana ditunjukkan oleh keberadaan ikon di sudut kanan atas editor. di sudut kanan atas editor.
 
- 
Klik ikon Gemini Code Assist: Smart Actions  , lalu pilih Explain this. , lalu pilih Explain this.
 
- 
Gemini Code Assist akan membuka panel chat dengan perintah yang telah diisi sebelumnya, yakni Explain this. Di kotak teks inline chat Code Assist, ganti perintah yang sudah terisi dengan perintah berikut, lalu klik Send:
 
You are an expert Cloud Developer at Cymbal AI. A new team member is unfamiliar with this Cloud Function implementation. Explain the "index.js" file in detail, breaking down its key components used in the application code.
For the suggested improvements, don't update the file.File index.js berisi kode aplikasi yang menerima Log Audit yang digabungkan ke dalam CloudEvent. Kode aplikasi ini selanjutnya mengekstrak detail instance VM Compute Engine dan menetapkan label pada instance VM tersebut. Silakan pelajari sendiri index.js secara lebih mendetail.
Penjelasan mendetail untuk kode index.js akan muncul di chat Gemini Code Assist.
Men-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 dengan gcloudseperti sebelumnya. Perhatikan cara fungsi ini memfilter Log Audit untuk penyisipan Compute Engine dengan flag--trigger-event-filters:
gcloud functions deploy gce-vm-labeler \
  --gen2 \
  --runtime nodejs22 \
  --entry-point labelVmCreation \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-event-filters="type=google.cloud.audit.log.v1.written,serviceName=compute.googleapis.com,methodName=beta.compute.instances.insert" \
  --trigger-location {{{project_0.default_region|Region}}} \
  --max-instances 1
Catatan: Meskipun pemicu fungsi Audit Log Anda langsung dibuat, perlu waktu hingga 10 menit agar pemicu berfungsi sepenuhnya.Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi Cloud Audit Logs
Menguji
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.pydengan fungsi Python yang membaca variabel lingkungan warna dan merespons denganHello Worlddalam 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>'Men-deploy
- Jalankan perintah berikut untuk men-deploy revisi pertama fungsi dengan latar belakang oranye:
COLOR=orange
gcloud functions deploy hello-world-colored \
  --gen2 \
  --runtime python39 \
  --entry-point hello_world \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-http \
  --allow-unauthenticated \
  --update-env-vars COLOR=$COLOR \
  --max-instances 1Pada tahap ini, jika Anda menguji fungsi dengan melihat pemicu HTTP (output URI dari perintah deployment yang dieksekusi sebelumnya) di browser, Anda akan melihat Hello World dengan latar belakang oranye:

- 
Buka halaman Cloud Run functions. Anda akan dialihkan ke konsol Cloud Run. Klik fungsi 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, 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 fungsiinityang tidur selama 10 detik untuk menyimulasikan inisialisasi yang panjang. Layanan ini juga memiliki fungsiHelloWorldyang 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.23Men-deploy
- Jalankan perintah berikut untuk men-deploy revisi pertama fungsi dengan nilai instance minimum default, yakni nol:
gcloud functions deploy slow-function \
  --gen2 \
  --runtime go123 \
  --entry-point HelloWorld \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-http \
  --allow-unauthenticated \
  --max-instances 4
- Uji fungsi dengan perintah berikut:
gcloud functions call slow-function \
  --gen2 --region {{{project_0.default_region|Region}}}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 1dan Maximum number of instances ke4.
 
- 
Biarkan kolom lainnya terisi dengan nilai default-nya, lalu klik Deploy. 
Menguji
- Jalankan perintah berikut untuk menguji fungsi lagi:
gcloud functions call slow-function \
  --gen2 --region {{{project_0.default_region|Region}}}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 dari langkah sebelumnya dengan inisialisasi lambat. 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 Install berikut untuk menginstal heydi Cloud Shell:
sudo apt install hey
- Jalankan perintah berikut untuk mendapatkan URL fungsi dan menyimpannya sebagai variabel lingkungan:
SLOW_URL=$(gcloud functions describe slow-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Gunakan alat tolok ukur open source bernama heyuntuk mengirim 10 permintaan serentak ke fungsi yang lambat.
hey -n 10 -c 10 $SLOW_URLAnda 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"}}}Men-deploy
- Jalankan perintah berikut untuk men-deploy fungsi baru yang identik dengan fungsi sebelumnya. Setelah di-deploy, Anda dapat meningkatkan konkurensinya:
gcloud functions deploy slow-concurrent-function \
  --gen2 \
  --runtime go123 \
  --entry-point HelloWorld \
  --source . \
  --region {{{project_0.default_region|Region}}} \
  --trigger-http \
  --allow-unauthenticated \
  --min-instances 1 \
  --max-instances 4Menetapkan 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 functions describe slow-concurrent-function --region {{{project_0.default_region|Region}}} --gen2 --format="value(serviceConfig.uri)")
- Sekarang gunakan heyuntuk mengirim 10 permintaan serentak:
hey -n 10 -c 10 $SLOW_CONCURRENT_URLAnda 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 untuk mempelajari 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: 19 Agustus 2025
Lab Terakhir Diuji: 19 Agustus 2025
Hak cipta 2025 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.