Memicu Workflows menggunakan Cloud Audit Logs (gcloud CLI)
Panduan memulai ini menunjukkan cara menjalankan alur kerja menggunakan pemicu Eventarc yang menerima peristiwa Cloud Audit Logs dari BigQuery. BigQuery menghosting set data publik yang dapat Anda akses dan integrasikan ke dalam aplikasi Anda. Pemicu menjalankan alur kerja dengan memproses tugas BigQuery yang mengkueri set data publik. Kemudian, peristiwa tersebut diteruskan sebagai argumen runtime ke alur kerja tujuan.
Anda dapat menyelesaikan panduan memulai ini menggunakan Google Cloud CLI.
- Gunakan Alur Kerja untuk membuat dan men-deploy alur kerja yang mengekstrak dan menampilkan data dari peristiwa.
- Buat pemicu Eventarc yang menghubungkan tugas BigQuery ke penerima peristiwa Workflows.
- Buat peristiwa dengan menjalankan tugas BigQuery menggunakan alat command line bq. Peristiwa ini diteruskan sebagai argumen runtime ke alur kerja tujuan.
- Lihat data peristiwa di output eksekusi alur kerja.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
- Perbarui komponen
gcloud
:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Aktifkan Compute Engine, Eventarc, Pub/Sub, dan Workflows API.
gcloud services enable \ compute.googleapis.com \ eventarc.googleapis.com \ pubsub.googleapis.com \ workflows.googleapis.com \ workflowexecutions.googleapis.com
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
export WORKFLOW_LOCATION=us-central1 export TRIGGER_LOCATION=us-central1 export PROJECT_ID=PROJECT_ID gcloud config set project ${PROJECT_ID} gcloud config set workflows/location ${WORKFLOW_LOCATION} gcloud config set eventarc/location ${TRIGGER_LOCATION}
-
Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (
roles/owner
). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan memulai ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Eventarc Admin (
roles/eventarc.admin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
) -
Workflows Admin (
roles/workflows.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Eventarc Admin (
Catat akun layanan default Compute Engine karena Anda akan melampirkan akun tersebut ke pemicu Eventarc untuk merepresentasikan identitas pemicu untuk tujuan pengujian. Akun layanan ini dibuat secara otomatis setelah mengaktifkan atau menggunakan Google Cloud layanan yang menggunakan Compute Engine, dan dengan format email berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang pada Konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM yang berisi izin minimum yang diperlukan dan ikuti prinsip hak istimewa terendah.
- Berikan
Peran
Eventarc Event Receiver (
roles/eventarc.eventReceiver
) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menerima peristiwa dari penyedia peristiwa.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
- Berikan
peran Workflows Invoker (
roles/workflows.invoker
) pada project ke akun layanan default Compute Engine agar akun memiliki izin untuk memicu eksekusi alur kerja Anda.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/workflows.invoker
- Berikan
peran Logging
Logs Writer (
roles/logging.logWriter
) pada project ke akun layanan default Compute Engine agar alur kerja dapat mengirim log ke Cloud Logging.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/logging.logWriter
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum
8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) ke agen layanan. Jika tidak, peran ini akan diberikan secara default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Membuat dan men-deploy alur kerja
Buat dan deploy alur kerja yang dijalankan saat penyelesaian tugas BigQuery memicu alur kerja dengan permintaan HTTP.
- Buka terminal atau Cloud Shell.
- Di direktori utama, buat file baru bernama
myFirstWorkflow.yaml
ataumyFirstWorkflow.json
. - Salin dan tempel kode berikut ke dalam file baru, lalu simpan:
YAML
main: params: [event] steps: - log_event: call: sys.log args: text: ${event} severity: INFO - extract_data: assign: - data: ${event.data.protoPayload} - return_data: return: data: ${data}
JSON
{ "main": { "params": [ "event" ], "steps": [ { "log_event": { "call": "sys.log", "args": { "text": "${event}", "severity": "INFO" } } }, { "extract_data": { "assign": [ { "data": "${event.data.protoPayload}" } ] } }, { "return_data": { "return": { "data": "${data}" } } } ] } }
- Deploy alur kerja:
export MY_WORKFLOW=myFirstWorkflow gcloud workflows deploy ${MY_WORKFLOW} --source=myFirstWorkflow.yaml
Ganti
.yaml
dengan.json
jika Anda menyalin versi JSON dari contoh alur kerja.
Membuat pemicu Eventarc
Untuk membuat pemicu Eventarc yang merutekan peristiwa dari
BigQuery ke tujuan Workflows, jalankan perintah
gcloud eventarc triggers create
.
Buat pemicu yang memfilter peristiwa BigQuery:
gcloud eventarc triggers create events-cal-trigger \ --destination-workflow=${MY_WORKFLOW} \ --destination-workflow-location=${WORKFLOW_LOCATION} \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=bigquery.googleapis.com" \ --event-filters="methodName=google.cloud.bigquery.v2.JobService.InsertJob" \ --service-account="PROJECT_NUMBER-compute@developer.gserviceaccount.com"
Tindakan ini akan membuat pemicu yang disebut
events-cal-trigger
.Perhatikan bahwa saat membuat pemicu Eventarc untuk pertama kalinya dalam project Google Cloud , mungkin akan ada penundaan dalam penyediaan agen layanan Eventarc. Masalah ini biasanya dapat diatasi dengan mencoba membuat ulang pemicu. Untuk informasi selengkapnya, lihat Error izin ditolak.
Untuk mengonfirmasi bahwa
events-cal-trigger
berhasil dibuat, jalankan:gcloud eventarc triggers describe events-cal-trigger --location=${TRIGGER_LOCATION}
Output mencantumkan waktu dan lokasi pembuatan pemicu dan harus mirip dengan yang berikut ini:
createTime: '2021-10-14T15:15:43.872360951Z' [...] name: projects/PROJECT_ID/locations/us-central1/triggers/events-cal-trigger
Membuat dan melihat peristiwa
Jalankan tugas BigQuery menggunakan alat command line bq untuk membuat peristiwa dan memicu alur kerja.
Untuk memicu alur kerja, jalankan tugas BigQuery yang mengakses set data publik dan mengambil informasi darinya:
bq query --nouse_legacy_sql \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
Peristiwa yang dihasilkan diteruskan sebagai argumen runtime ke alur kerja yang menampilkan data payload sebagai hasil dari eksekusi alur kerja.
Untuk memverifikasi bahwa alur kerja dipicu, cantumkan dua eksekusi terakhirnya:
gcloud workflows executions list ${MY_WORKFLOW} --limit=2
Dua eksekusi alur kerja dipicu oleh tugas BigQuery. (Satu peristiwa menandakan perubahan tugas; yang lainnya, penyisipan tugas itu sendiri.) Output mencantumkan
NAME
danSTATE
yang sama denganSUCCEEDED
untuk setiap eksekusi, dan harus mirip dengan berikut ini:NAME: projects/218898424763/locations/us-central1/workflows/myFirstWorkflow/executions/a073ad6a-c76b-4437-8d39-2ab3ade289d2 STATE: SUCCEEDED START_TIME: 2024-02-06T14:16:14.390549813Z END_TIME: 2024-02-06T14:16:14.870102511Z NAME: projects/218898424763/locations/us-central1/workflows/myFirstWorkflow/executions/35d7c730-7ba5-4055-afee-c04ed706b179 STATE: SUCCEEDED START_TIME: 2024-02-06T14:16:14.389882601Z END_TIME: 2024-02-06T14:16:14.829942525Z
Perhatikan bahwa dalam output,
a073ad6a-c76b-4437-8d39-2ab3ade289d2
dari kolomNAME
adalah ID eksekusi alur kerja. Salin ID eksekusi untuk digunakan di langkah berikutnya.Untuk melihat status eksekusi, jalankan perintah berikut:
gcloud workflows executions describe WORKFLOW_EXECUTION_ID --workflow=${MY_WORKFLOW}
Ganti
WORKFLOW_EXECUTION_ID
dengan ID eksekusi alur kerja yang sesuai dengan waktu saat tugas BigQuery selesai.Outputnya akan mirip dengan berikut ini:
argument: [...] duration: 0.277917625s endTime: '2024-02-06T14:16:14.870102511Z' name: projects/218898424763/locations/us-central1/workflows/myFirstWorkflow/executions/a073ad6a-c76b-4437-8d39-2ab3ade289d2 result: '{"data": [...]}' startTime: '2024-02-06T14:16:14.390549813Z' state: SUCCEEDED
Pastikan
startTime
tempat tugas BigQuery selesai danSTART_TIME
eksekusi alur kerja sesuai satu sama lain.
Anda telah berhasil membuat peristiwa BigQuery yang telah memicu penerima peristiwa Workflows menggunakan Eventarc.
Pembersihan
- Hapus alur kerja yang Anda buat:
Saat ditanya apakah Anda ingin melanjutkan, masukkangcloud workflows delete ${MY_WORKFLOW}
y
. - Hapus pemicu yang Anda buat:
gcloud eventarc triggers delete events-cal-trigger
- Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID