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, pemicu meneruskan peristiwa sebagai argumen runtime ke alur kerja tujuan.

Anda dapat menyelesaikan panduan memulai ini menggunakan Google Cloud CLI.

  1. Gunakan Workflows untuk membuat dan men-deploy alur kerja yang mengekstrak dan menampilkan data dari peristiwa.
  2. Buat pemicu Eventarc yang menghubungkan tugas BigQuery ke penerima peristiwa Workflows.
  3. Buat peristiwa dengan menjalankan tugas BigQuery menggunakan alat command line bq. Peristiwa ini diteruskan sebagai argumen runtime ke alur kerja tujuan.
  4. 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 yang terbatas. Google Cloud

  1. Login ke akun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Instal Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih Google Cloud project yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama Google Cloud project Anda.

  6. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  7. Instal Google Cloud CLI.

  8. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  9. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih Google Cloud project yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama Google Cloud project Anda.

  11. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  12. Perbarui komponen gcloud:
    gcloud components update
  13. Login menggunakan akun Anda:
    gcloud auth login
  14. 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
  15. 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}
  16. 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 Google Cloud resource 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:

    Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  17. Catat akun layanan default Compute Engine karena Anda akan melampirkannya 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 nomor Google Cloud project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di Google Cloud konsol 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 berisi izin minimum yang diperlukan dan mengikuti prinsip hak istimewa terendah.

  18. 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
  19. Berikan Peran Workflows Invoker (roles/workflows.invoker) pada project ke akun layanan default Compute Engine agar akun tersebut 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
  20. 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
  21. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum April 8, 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.

  1. Buka terminal atau Cloud Shell.
  2. Di direktori utama, buat file baru bernama myFirstWorkflow.yaml atau myFirstWorkflow.json.
  3. 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}"
              }
            }
          }
        ]
      }
    }
  4. 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 alur kerja contoh.

Membuat pemicu Eventarc

Untuk membuat pemicu Eventarc yang merutekan peristiwa dari BigQuery ke tujuan Workflows, jalankan gcloud eventarc triggers create perintah.

  1. 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 Google Cloud project, 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.

  2. Untuk mengonfirmasi bahwa events-cal-trigger berhasil dibuat, jalankan:

    gcloud eventarc triggers describe events-cal-trigger --location=${TRIGGER_LOCATION}

    Output akan mencantumkan waktu dan lokasi pembuatan pemicu dan akan 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.

  1. 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 dibuat diteruskan sebagai argumen runtime ke alur kerja yang menampilkan data payload sebagai hasil eksekusi alur kerja.

  2. Untuk memverifikasi bahwa alur kerja telah 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 lain, penyisipan tugas itu sendiri.) Output mencantumkan NAME dan STATE yang sama dengan SUCCEEDED untuk setiap eksekusi, dan akan mirip dengan yang 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 kolom NAME adalah ID eksekusi alur kerja. Salin ID eksekusi Anda untuk digunakan di langkah berikutnya.

  3. 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 penyelesaian tugas BigQuery.

    Output akan mirip dengan yang 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
  4. Pastikan startTime saat tugas BigQuery selesai dan START_TIME eksekusi alur kerja sesuai satu sama lain.

Anda telah berhasil membuat peristiwa BigQuery yang memicu penerima peristiwa Workflows menggunakan Eventarc.

Pembersihan

  1. Hapus alur kerja yang Anda buat:
    gcloud workflows delete ${MY_WORKFLOW}
    Saat ditanya apakah Anda ingin melanjutkan, masukkan y.
  2. Hapus pemicu yang Anda buat:
    gcloud eventarc triggers delete events-cal-trigger
  3. Atau, Anda dapat menghapus project Anda untuk menghindari tagihan. Google Cloud Menghapus project Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut. Google Cloud

    Hapus a Google Cloud project:

    gcloud projects delete PROJECT_ID

Langkah berikutnya