Cloud Audit Logs mencatat peristiwa di banyak Google Cloud layanan. Dengan menggunakan sink, Anda dapat memfilter log ini dan meneruskannya ke topik Pub/Sub yang memicu fungsi Cloud Run. Dengan begitu, Anda dapat merespons peristiwa dari layananGoogle Cloud mana pun yang menghasilkan log audit.
Halaman ini menunjukkan contoh cara memanggil fungsi dari entri log yang dirutekan ke topik Pub/Sub. Tutorial ini menggunakan pemicu Eventarc, tetapi Anda juga dapat menggunakan pemicu Pub/Sub langsung saat memicu fungsi.
Struktur peristiwa fungsi yang dipicu Pub/Sub
Fungsi yang dipicu oleh entri log Cloud Logging menerima objek PubsubMessage yang parameter data-nya adalah string berenkode base64. Untuk peristiwa log Cloud Logging, mendekode nilai ini akan menampilkan entri log yang relevan sebagai string JSON.
Sebelum memulai
Kode contoh meneruskan Cloud Audit Logs ke fungsi Cloud Run. Sebelum menjalankan kode contoh, Anda memerlukan hal berikut:
Lihat panduan pemicu Pub/Sub untuk mengetahui API yang perlu diaktifkan dan peran yang diperlukan untuk men-deploy fungsi yang dipicu oleh Pub/Sub.
Kode contoh
Anda dapat menggunakan fungsi yang dipicu Pub/Sub untuk mendeteksi dan merespons log Cloud Logging yang diekspor:
Node.js
Python
Go
Java
Men-deploy dan memicu fungsi
Untuk mengonfigurasi pemicu selama deployment fungsi:
Jalankan perintah berikut di direktori yang berisi kode contoh untuk men-deploy fungsi Anda:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGIONGanti kode berikut:
- REGION: Region Google Cloud tempat Anda ingin men-deploy fungsi. Contoh,
europe-west1. - Flag
--functionmenentukan titik masuk ke fungsi dalam contoh kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda. - Flag
--base-imagemenentukan lingkungan image dasar untuk fungsi Anda. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.
- REGION: Region Google Cloud tempat Anda ingin men-deploy fungsi. Contoh,
Jalankan perintah berikut untuk membuat pemicu yang memfilter peristiwa:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --service-account=PROJECT_NUMBER-compute@Ganti kode berikut:
- TRIGGER_NAME: nama untuk pemicu Anda.
- EVENTARC_TRIGGER_LOCATION: lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resourceGoogle Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi di region yang sama. Lihat Memahami lokasi Eventarc untuk detail selengkapnya tentang lokasi pemicu Eventarc.
- SERVICE: nama fungsi yang Anda deploy.
- REGION: region Cloud Run tempat Anda men-deploy fungsi.
- PROJECT_NUMBER: nomor project Google Cloud Anda. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan Akun layanan komputasi default.
- Flag
--event-filtersmenentukan filter peristiwa yang dipantau pemicu. Jika cocok dengan semua filter peristiwa, peristiwa akan memicu panggilan ke fungsi Anda. Setiap pemicu harus memiliki jenis peristiwa yang didukung. Anda tidak dapat mengubah jenis filter peristiwa setelah pembuatan. Untuk mengubah jenis filter peristiwa, Anda harus membuat pemicu baru dan menghapus pemicu lama. Secara opsional, Anda dapat mengulangi flag--event-filtersdengan filter yang didukung dalam bentukATTRIBUTE=VALUEuntuk menambahkan lebih banyak filter. - TOPIC_NAME: nama topik Pub/Sub yang menerima peristiwa entri log.
- Flag
--transport-topicmenentukan topik Pub/Sub yang digunakan Eventarc untuk memindahkan peristiwa ke fungsi Anda. Perhatikan bahwa flag ini tidak diperlukan jika Anda sebelumnya tidak membuat topik Pub/Sub.
Entri log Cloud
Saat entri log Cloud yang cocok dengan salah satu filter dibuat, entri log yang sesuai untuk fungsi Anda di konsolGoogle Cloud akan terlihat seperti berikut:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS