Ringkasan
Cloud Run Function merupakan potongan kode yang dijalankan untuk merespons suatu peristiwa, seperti permintaan HTTP, pesan dari layanan pesan, atau upload file. Peristiwa cloud adalah hal-hal yang terjadi di lingkungan cloud Anda. Hal-hal tersebut dapat berupa perubahan data dalam database, file yang ditambahkan ke sistem penyimpanan, atau instance virtual machine baru yang dibuat.
Karena dijalankan berdasarkan peristiwa, Cloud Run Functions hanya akan dijalankan saat terjadi sesuatu. Hal ini menjadikan Cloud Run Functions sebagai pilihan bagus untuk tugas-tugas yang harus dikerjakan dengan cepat atau yang tidak perlu dijalankan sepanjang waktu.
Lab praktik ini akan menunjukkan cara membuat, men-deploy, dan menguji Cloud Run Function yang akan memuat tabel BigQuery menggunakan Google Cloud SDK.
Yang akan Anda lakukan
- Membuat Cloud Run Function
- Men-deploy dan menguji Cloud Run Function
- Melihat data di BigQuery dan log Cloud Run Function
Penyiapan dan Persyaratan
Untuk setiap lab, Anda akan memperoleh project Google Cloud baru serta serangkaian resource selama jangka waktu tertentu, tanpa biaya.
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri adalah panel Lab Details yang memuat sebagai 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 melihat menu yang berisi daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas, atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Google Cloud Shell
Google Cloud Shell adalah virtual machine yang dilengkapi dengan berbagai fitur pengembangan. Virtual machine ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud.
Google Cloud Shell menyediakan akses command line untuk resource Google Cloud Anda.
-
Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.

-
Klik Continue.
Proses menyediakan dan menghubungkan ke lingkungan memerlukan waktu beberapa saat. Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Contoh:

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
Output:
Akun berkredensial:
- @.com (aktif)
Contoh output:
Akun berkredensial:
- google1623327_student@qwiklabs.net
- Anda dapat menampilkan daftar project ID dengan perintah ini:
gcloud config list project
Output:
[core]
project =
Contoh output:
[core]
project = qwiklabs-gcp-44776a13dea667a6
Catatan:
Dokumentasi lengkap gcloud tersedia dalam
panduan ringkasan gcloud CLI
.
Tugas 1. Mengaktifkan API
Dalam tugas ini, Anda akan mengaktifkan API yang relevan sebelum membuat Cloud Run Functions.
- Di Cloud Shell, jalankan perintah berikut untuk menetapkan variabel Project ID:
export PROJECT_ID=$(gcloud config get-value project)
- Jalankan perintah berikut untuk menetapkan variabel Region:
export REGION={{{project_0.default_region | "REGION"}}}
gcloud config set compute/region $REGION
- Jalankan perintah berikut untuk menetapkan variabel konfigurasi:
gcloud config set run/region $REGION
gcloud config set run/platform managed
gcloud config set eventarc/location $REGION
- 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
Catatan: Untuk Eventarc, mungkin perlu beberapa menit sebelum semua izin disebarkan ke agen layanan
Tugas 2. Menetapkan izin yang diperlukan
Dalam tugas ini, Anda akan memberikan kemampuan kepada akun layanan Compute Engine default untuk menerima peristiwa Eventarc, dan memberikan izin kepada agen layanan Cloud Storage untuk memublikasikan pesan ke topik Pub/Sub, sehingga memungkinkan alur kerja berbasis peristiwa dan tindakan yang dipicu penyimpanan.
- Di Cloud Shell, jalankan perintah berikut untuk menetapkan variabel PROJECT_NUMBER:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
- Jalankan perintah berikut guna memberikan izin yang diperlukan akun layanan Compute Engine default untuk menerima peristiwa dari Eventarc dalam project Anda:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
--role="roles/eventarc.eventReceiver"
- Jalankan perintah berikut untuk mengambil agen layanan Cloud Storage untuk project Anda, dan berikan izin untuk memublikasikan pesan ke topik Pub/Sub:
SERVICE_ACCOUNT="$(gcloud storage service-agent --project=$PROJECT_ID)"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${SERVICE_ACCOUNT}" \
--role='roles/pubsub.publisher'
Tugas 3. Membuat fungsi
Dalam tugas ini, Anda akan membuat fungsi sederhana bernama loadBigQueryFromAvro. Fungsi ini akan membaca file Avro yang diupload ke Cloud Storage, lalu membuat dan memuat tabel di BigQuery.
- Di Cloud Shell, jalankan perintah berikut untuk membuat dan membuka file bernama
index.js
:
nano index.js
- Salin kode berikut untuk Cloud Function ke file
index.js
:
/**
* index.js Cloud Function - Avro on GCS to BQ
*/
const {Storage} = require('@google-cloud/storage');
const {BigQuery} = require('@google-cloud/bigquery');
const storage = new Storage();
const bigquery = new BigQuery();
exports.loadBigQueryFromAvro = async (event, context) => {
try {
// Check for valid event data and extract bucket name
if (!event || !event.bucket) {
throw new Error('Invalid event data. Missing bucket information.');
}
const bucketName = event.bucket;
const fileName = event.name;
// BigQuery configuration
const datasetId = 'loadavro';
const tableId = fileName.replace('.avro', '');
const options = {
sourceFormat: 'AVRO',
autodetect: true,
createDisposition: 'CREATE_IF_NEEDED',
writeDisposition: 'WRITE_TRUNCATE',
};
// Load job configuration
const loadJob = bigquery
.dataset(datasetId)
.table(tableId)
.load(storage.bucket(bucketName).file(fileName), options);
await loadJob;
console.log(`Job ${loadJob.id} completed. Created table ${tableId}.`);
} catch (error) {
console.error('Error loading data into BigQuery:', error);
throw error;
}
};
- Di nano, tekan (Ctrl+x), lalu tekan (Y), dan tekan Enter untuk menyimpan file.
Membuat fungsi.
Tugas 4. Membuat bucket Cloud Storage dan set data BigQuery
Dalam tugas ini, Anda akan menyiapkan infrastruktur latar belakang guna menyimpan aset yang dipakai untuk memanggil Cloud Run Function (bucket Cloud Storage), lalu menyimpan output di BigQuery setelah selesai.
- Di Cloud Shell, jalankan perintah berikut untuk membuat bucket Cloud Storage baru sebagai lokasi staging:
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
- Jalankan perintah berikut untuk membuat set data BQ guna menyimpan data tersebut:
bq mk -d loadavro
Membuat bucket Cloud Storage dan set data BigQuery.
Tugas 5. Men-deploy fungsi
Dalam tugas ini, Anda akan men-deploy Cloud Run Function yang baru dan memicunya agar data dimuat ke BigQuery.
- Di Cloud Shell, jalankan perintah berikut untuk menginstal dua library JavaScript agar dapat membaca dari Cloud Storage dan menyimpan output di BigQuery:
npm install @google-cloud/storage @google-cloud/bigquery
- Jalankan perintah berikut untuk men-deploy fungsi:
gcloud functions deploy loadBigQueryFromAvro \
--gen2 \
--runtime nodejs20 \
--source . \
--region $REGION \
--trigger-resource gs://$PROJECT_ID \
--trigger-event google.storage.object.finalize \
--memory=512Mi \
--timeout=540s \
--service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com
Catatan: Jika Anda melihat pesan error terkait penyebaran agen layanan Eventarc, tunggu beberapa menit lalu coba lagi perintah tersebut.
- Jalankan perintah berikut untuk mengonfirmasi bahwa pemicu berhasil dibuat. Outputnya akan seperti ini:
gcloud eventarc triggers list --location=$REGION
NAME: loadbigqueryfromavro-177311
TYPE: google.cloud.storage.object.v1.finalized
DESTINATION: Cloud Functions: loadBigQueryFromAvro
ACTIVE: Yes
LOCATION: europe-west1
- Jalankan perintah berikut untuk mendownload file Avro yang akan diproses oleh Cloud Run Function untuk disimpan di BigQuery:
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
- Jalankan perintah berikut untuk memindahkan file Avro ke bucket Cloud Storage staging yang telah Anda buat sebelumnya. Tindakan ini akan memicu Cloud Run Function.
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}}
Mendeploy fungsi.
Tugas 6. Mengonfirmasi bahwa data telah dimuat ke dalam BigQuery
Dalam tugas ini, Anda akan mengonfirmasi bahwa data yang diproses oleh Cloud Run Function telah berhasil dimuat ke BigQuery dengan mengkueri tabel loadavro.campaigns
menggunakan perintah bq
- Di Cloud Shell, jalankan perintah berikut untuk melihat data di tabel baru di BigQuery, menggunakan perintah bq:
bq query \
--use_legacy_sql=false \
'SELECT * FROM `loadavro.campaigns`;'
Catatan: Cloud Run Function biasanya akan memproses dengan sangat cepat, tetapi ada kemungkinan kueri yang dijalankan di BigQuery tidak menunjukkan hasil. Jika hal ini yang terjadi, tunggu beberapa saat dan jalankan kembali kueri tersebut.
Kueri akan menampilkan hasil yang serupa dengan contoh berikut:
Contoh output:
+------------+--------+---------------------+--------+---------------------+----------+-----+
| created_at | period | campaign_name | amount | advertising_channel | bid_type | id |
+------------+--------+---------------------+--------+---------------------+----------+-----+
| 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 |
| 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 |
| 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 |
| 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 |
| 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 |
| 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 |
| 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 |
| 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 |
| 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 |
| 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 |
+------------+--------+---------------------+--------+---------------------+----------+-----+
Tugas 7. Melihat log
Dalam tugas ini, Anda akan mengambil semua entri log yang terkait dengan layanan Anda yang bernama loadBigQueryFromAvro.
- Di Cloud Shell, jalankan perintah berikut untuk memeriksa log untuk Cloud Run Function Anda:
gcloud logging read "resource.labels.service_name=loadBigQueryFromAvro"
Pesan dalam log yang muncul akan seperti berikut ini:
resource:
labels:
configuration_name: loadbigqueryfromavro
location: europe-west1
project_id: qwiklabs-gcp-04-16fde64676e4
revision_name: loadbigqueryfromavro-00001-wim
service_name: loadbigqueryfromavro
type: cloud_run_revision
spanId: '5804952652695382607'
textPayload: |
Job undefined completed. Created table campaigns.
timestamp: '2025-03-10T17:24:43.560594Z'
Selamat!
Anda telah menggunakan Google Cloud SDK untuk membuat, men-deploy, dan menguji Cloud Run Function yang membuat dan memuat tabel BigQuery.
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.