arrow_back

Menggunakan Cloud Run Functions untuk Memuat Data ke BigQuery

Login Gabung
Dapatkan akses ke 700+ lab dan kursus

Menggunakan Cloud Run Functions untuk Memuat Data ke BigQuery

Lab 45 menit universal_currency_alt 5 Kredit show_chart Pengantar
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Dapatkan akses ke 700+ lab dan kursus

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.

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

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

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

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.

  1. Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.

    Ikon Cloud Shell yang diperjelas

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

Project ID yang diperjelas di Terminal Cloud Shell

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.

  1. Di Cloud Shell, jalankan perintah berikut untuk menetapkan variabel Project ID:
export PROJECT_ID=$(gcloud config get-value project)
  1. Jalankan perintah berikut untuk menetapkan variabel Region:
export REGION={{{project_0.default_region | "REGION"}}} gcloud config set compute/region $REGION
  1. 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
  1. 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.

  1. Di Cloud Shell, jalankan perintah berikut untuk menetapkan variabel PROJECT_NUMBER:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
  1. 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"
  1. 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.

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat dan membuka file bernama index.js:
nano index.js
  1. 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; } };
  1. 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.

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat bucket Cloud Storage baru sebagai lokasi staging:
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
  1. 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.

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

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

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

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

Gunakan jendela Samaran atau browser pribadi 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.