Membuat pemicu menggunakan Terraform

Dokumen ini menjelaskan cara menggunakan Terraform dan resource google_eventarc_trigger untuk membuat pemicu Eventarc bagi tujuan Google Cloud berikut:

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Terraform, lihat dokumentasi Terraform di Google Cloud.

Contoh kode dalam panduan ini merutekan peristiwa langsung dari Cloud Storage, tetapi dapat disesuaikan untuk penyedia peristiwa apa pun. Misalnya, untuk mempelajari cara merutekan peristiwa langsung dari Pub/Sub ke Cloud Run, lihat panduan memulai Terraform.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Aktifkan Cloud Resource Manager dan Identity and Access Management (IAM) API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Aktifkan API

  7. Di konsol Google Cloud , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.

  8. Terraform terintegrasi ke dalam lingkungan Cloud Shell dan Anda dapat menggunakan Cloud Shell untuk men-deploy resource Terraform tanpa harus menginstal Terraform.

Bersiap untuk men-deploy Terraform

Sebelum men-deploy resource Terraform, Anda harus membuat file konfigurasi Terraform. File konfigurasi Terraform memungkinkan Anda menentukan status akhir pilihan untuk infrastruktur menggunakan sintaksis Terraform.

Menyiapkan Cloud Shell

Di Cloud Shell, tetapkan project default tempat Anda ingin menerapkan konfigurasi Terraform. Google Cloud Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun:

export GOOGLE_CLOUD_PROJECT=PROJECT_ID

Ganti PROJECT_ID dengan ID project Google Cloud Anda.

Perhatikan bahwa variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root). Di Cloud Shell, buat direktori dan buat file baru di dalam direktori tersebut:

mkdir DIRECTORY && cd DIRECTORY && touch main.tf

Nama file harus memiliki ekstensi .tf—misalnya, dalam dokumen ini, file disebut sebagai main.tf.

Tentukan konfigurasi Terraform Anda

Salin contoh kode Terraform yang berlaku ke dalam file main.tf yang baru dibuat. Atau, Anda dapat menyalin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

Biasanya, Anda menerapkan seluruh konfigurasi sekaligus. Namun, Anda juga dapat menargetkan resource tertentu. Contoh:

terraform apply -target="google_eventarc_trigger.default"

Perhatikan bahwa contoh kode Terraform menggunakan interpolasi untuk penggantian seperti variabel referensi, atribut resource, dan fungsi panggilan.

Mengaktifkan API

Contoh Terraform biasanya mengasumsikan bahwa API yang diperlukan sudah diaktifkan di projectGoogle Cloud Anda. Gunakan kode berikut untuk mengaktifkan API:

Cloud Run

# Enable Cloud Run API
resource "google_project_service" "run" {
  service            = "run.googleapis.com"
  disable_on_destroy = false
}

# Enable Eventarc API
resource "google_project_service" "eventarc" {
  service            = "eventarc.googleapis.com"
  disable_on_destroy = false
}

# Enable Pub/Sub API
resource "google_project_service" "pubsub" {
  service            = "pubsub.googleapis.com"
  disable_on_destroy = false
}

GKE

# Enable GKE API
resource "google_project_service" "container" {
  service            = "container.googleapis.com"
  disable_on_destroy = false
}

# Enable Eventarc API
resource "google_project_service" "eventarc" {
  service            = "eventarc.googleapis.com"
  disable_on_destroy = false
}

# Enable Pub/Sub API
resource "google_project_service" "pubsub" {
  service            = "pubsub.googleapis.com"
  disable_on_destroy = false
}

Workflows

# Enable Workflows API
resource "google_project_service" "workflows" {
  service            = "workflows.googleapis.com"
  disable_on_destroy = false
}

# Enable Eventarc API
resource "google_project_service" "eventarc" {
  service            = "eventarc.googleapis.com"
  disable_on_destroy = false
}

# Enable Pub/Sub API
resource "google_project_service" "pubsub" {
  service            = "pubsub.googleapis.com"
  disable_on_destroy = false
}

Buat akun layanan dan konfigurasi aksesnya

Setiap pemicu Eventarc dikaitkan dengan akun layanan IAM pada saat pemicu dibuat. Gunakan kode berikut untuk membuat akun layanan khusus dan memberikan peran Identity and Access Management tertentu kepada akun layanan yang dikelola pengguna untuk mengelola peristiwa:

Cloud Run

# Used to retrieve project information later
data "google_project" "project" {}

# Create a dedicated service account
resource "google_service_account" "default" {
  account_id   = "eventarc-trigger-sa"
  display_name = "Eventarc Trigger Service Account"
}

# Grant permission to receive Eventarc events
resource "google_project_iam_member" "eventreceiver" {
  project = data.google_project.project.id
  role    = "roles/eventarc.eventReceiver"
  member  = "serviceAccount:${google_service_account.default.email}"
}

# Grant permission to invoke Cloud Run services
resource "google_project_iam_member" "runinvoker" {
  project = data.google_project.project.id
  role    = "roles/run.invoker"
  member  = "serviceAccount:${google_service_account.default.email}"
}

Agen layanan Pub/Sub dibuat secara otomatis saat Pub/Sub API diaktifkan. Jika agen layanan Pub/Sub dibuat pada atau sebelum 8 April 2021, dan akun layanan tidak memiliki peran Cloud Pub/Sub Service Agent (roles/pubsub.serviceAgent), berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan. Untuk mengetahui informasi selengkapnya, lihat Membuat dan memberikan peran pada agen layanan.

resource "google_project_iam_member" "tokencreator" {
  project  = data.google_project.project.id
  role     = "roles/iam.serviceAccountTokenCreator"
  member   = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com"
}

GKE

  1. Sebelum membuat akun layanan, aktifkan Eventarc untuk mengelola cluster GKE:

    # Used to retrieve project_number later
    data "google_project" "project" {}
    
    # Enable Eventarc to manage GKE clusters
    # This is usually done with: gcloud eventarc gke-destinations init
    #
    # Eventarc creates a separate Event Forwarder pod for each trigger targeting a
    # GKE service, and  requires explicit permissions to make changes to the
    # cluster. This is done by granting permissions to a special service account
    # (the Eventarc P4SA) to manage resources in the cluster. This needs to be done
    # once per Google Cloud project.
    
    # This identity is created with: gcloud beta services identity create --service eventarc.googleapis.com
    # This local variable is used for convenience
    locals {
      eventarc_sa = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-eventarc.iam.gserviceaccount.com"
    }
    
    resource "google_project_iam_member" "computeViewer" {
      project = data.google_project.project.id
      role    = "roles/compute.viewer"
      member  = local.eventarc_sa
    }
    
    resource "google_project_iam_member" "containerDeveloper" {
      project = data.google_project.project.id
      role    = "roles/container.developer"
      member  = local.eventarc_sa
    }
    
    resource "google_project_iam_member" "serviceAccountAdmin" {
      project = data.google_project.project.id
      role    = "roles/iam.serviceAccountAdmin"
      member  = local.eventarc_sa
    }
  2. Buat akun layanan:

    # Create a service account to be used by GKE trigger
    resource "google_service_account" "eventarc_gke_trigger_sa" {
      account_id   = "eventarc-gke-trigger-sa"
      display_name = "Evenarc GKE Trigger Service Account"
    }
    
    # Grant permission to receive Eventarc events
    resource "google_project_iam_member" "eventreceiver" {
      project = data.google_project.project.id
      role    = "roles/eventarc.eventReceiver"
      member  = "serviceAccount:${google_service_account.eventarc_gke_trigger_sa.email}"
    }
    
    # Grant permission to subscribe to Pub/Sub topics
    resource "google_project_iam_member" "pubsubscriber" {
      project = data.google_project.project.id
      role    = "roles/pubsub.subscriber"
      member  = "serviceAccount:${google_service_account.eventarc_gke_trigger_sa.email}"
    }
    

Workflows

# Used to retrieve project information later
data "google_project" "project" {}

# Create a service account for Eventarc trigger and Workflows
resource "google_service_account" "eventarc" {
  account_id   = "eventarc-workflows-sa"
  display_name = "Eventarc Workflows Service Account"
}

# Grant permission to invoke Workflows
resource "google_project_iam_member" "workflowsinvoker" {
  project = data.google_project.project.id
  role    = "roles/workflows.invoker"
  member  = "serviceAccount:${google_service_account.eventarc.email}"
}

# Grant permission to receive events
resource "google_project_iam_member" "eventreceiver" {
  project = data.google_project.project.id
  role    = "roles/eventarc.eventReceiver"
  member  = "serviceAccount:${google_service_account.eventarc.email}"
}

# Grant permission to write logs
resource "google_project_iam_member" "logwriter" {
  project = data.google_project.project.id
  role    = "roles/logging.logWriter"
  member  = "serviceAccount:${google_service_account.eventarc.email}"
}

Agen layanan Pub/Sub dibuat secara otomatis saat Pub/Sub API diaktifkan. Jika agen layanan Pub/Sub dibuat pada atau sebelum 8 April 2021, dan akun layanan tidak memiliki peran Agen Layanan Cloud Pub/Sub (roles/pubsub.serviceAgent), berikan peran Pembuat Token Akun Layanan (roles/iam.serviceAccountTokenCreator) kepada agen layanan. Untuk mengetahui informasi selengkapnya, lihat Membuat dan memberikan peran pada agen layanan.

resource "google_project_iam_member" "tokencreator" {
  project  = data.google_project.project.id
  role     = "roles/iam.serviceAccountTokenCreator"
  member   = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com"
}

Membuat bucket Cloud Storage sebagai penyedia peristiwa

Gunakan kode berikut untuk membuat bucket Cloud Storage, dan berikan peran Pub/Sub Publisher (roles/pubsub.publisher) ke agen layanan Cloud Storage.

Cloud Run

# Cloud Storage bucket names must be globally unique
resource "random_id" "bucket_name_suffix" {
  byte_length = 4
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "default" {
  name          = "trigger-cloudrun-${data.google_project.project.name}-${random_id.bucket_name_suffix.hex}"
  location      = google_cloud_run_v2_service.default.location
  force_destroy = true

  uniform_bucket_level_access = true
}

# Grant the Cloud Storage service account permission to publish pub/sub topics
data "google_storage_project_service_account" "gcs_account" {}
resource "google_project_iam_member" "pubsubpublisher" {
  project = data.google_project.project.id
  role    = "roles/pubsub.publisher"
  member  = "serviceAccount:${data.google_storage_project_service_account.gcs_account.email_address}"

  depends_on = [data.google_storage_project_service_account.gcs_account]
}

GKE

# Cloud Storage bucket names must be globally unique
resource "random_id" "bucket_name_suffix" {
  byte_length = 4
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "default" {
  name          = "trigger-gke-${data.google_project.project.name}-${random_id.bucket_name_suffix.hex}"
  location      = "us-central1"
  force_destroy = true

  uniform_bucket_level_access = true
}

# Grant the Cloud Storage service account permission to publish pub/sub topics
data "google_storage_project_service_account" "gcs_account" {}
resource "google_project_iam_member" "pubsubpublisher" {
  project = data.google_project.project.id
  role    = "roles/pubsub.publisher"
  member  = "serviceAccount:${data.google_storage_project_service_account.gcs_account.email_address}"
}

Workflows

# Cloud Storage bucket names must be globally unique
resource "random_id" "bucket_name_suffix" {
  byte_length = 4
}

# Create a Cloud Storage bucket
resource "google_storage_bucket" "default" {
  name          = "trigger-workflows-${data.google_project.project.name}-${random_id.bucket_name_suffix.hex}"
  location      = google_workflows_workflow.default.region
  force_destroy = true

  uniform_bucket_level_access = true
}

# Grant the Cloud Storage service account permission to publish Pub/Sub topics
data "google_storage_project_service_account" "gcs_account" {}
resource "google_project_iam_member" "pubsubpublisher" {
  project = data.google_project.project.id
  role    = "roles/pubsub.publisher"
  member  = "serviceAccount:${data.google_storage_project_service_account.gcs_account.email_address}"
}

Membuat penerima peristiwa sebagai target peristiwa

Buat penerima peristiwa menggunakan salah satu resource Terraform berikut:

Cloud Run

Buat layanan Cloud Run sebagai tujuan peristiwa untuk pemicu Eventarc:

# Deploy Cloud Run service
resource "google_cloud_run_v2_service" "default" {
  name     = "hello-events"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # This container will log received events
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    service_account = google_service_account.default.email
  }

  depends_on = [google_project_service.run]
}

GKE

Untuk menyederhanakan panduan ini, buat layanan Google Kubernetes Engine sebagai tujuan peristiwa di luar Terraform, di antara penerapan konfigurasi Terraform.

  1. Jika Anda belum pernah membuat pemicu di project Google Cloud ini sebelumnya, jalankan perintah berikut untuk membuat agen layanan Eventarc:

    gcloud beta services identity create --service eventarc.googleapis.com
  2. Buat cluster GKE:

    # Create an auto-pilot GKE cluster
    resource "google_container_cluster" "gke_cluster" {
      name     = "eventarc-cluster"
      location = "us-central1"
    
      enable_autopilot = true
    
      depends_on = [
        google_project_service.container
      ]
    }
  3. Deploy layanan Kubernetes di GKE yang akan menerima permintaan HTTP dan mencatat peristiwa menggunakan image Cloud Run yang telah dibuat sebelumnya, us-docker.pkg.dev/cloudrun/container/hello:

    1. Dapatkan kredensial autentikasi untuk berinteraksi dengan cluster:

      gcloud container clusters get-credentials eventarc-cluster \
         --region=us-central1
      
    2. Buat deployment bernama hello-gke:

      kubectl create deployment hello-gke \
         --image=us-docker.pkg.dev/cloudrun/container/hello
      
    3. Ekspos deployment sebagai layanan Kubernetes:

      kubectl expose deployment hello-gke \
         --type ClusterIP --port 80 --target-port 8080
      
    4. Pastikan pod sedang berjalan:

      kubectl get pods
      

      Outputnya akan mirip dengan berikut ini:

      NAME                         READY   STATUS    RESTARTS   AGE
      hello-gke-5b6574b4db-rzzcr   1/1     Running   0          2m45s
      

      Jika STATUS adalah Pending atau ContainerCreating, pod sedang di-deploy. Tunggu satu menit hingga deployment selesai, lalu periksa kembali statusnya.

    5. Pastikan layanan berjalan:

      kubectl get svc
      

      Outputnya akan mirip dengan berikut ini:

      NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
      hello-gke    ClusterIP   34.118.230.123   <none>        80/TCP    4m46s
      kubernetes   ClusterIP   34.118.224.1     <none>        443/TCP   14m
      

Workflows

Men-deploy alur kerja yang dieksekusi saat objek diperbarui di bucket Cloud Storage:

# Create a workflow
resource "google_workflows_workflow" "default" {
  name            = "storage-workflow-tf"
  region          = "us-central1"
  description     = "Workflow that returns information about storage events"
  service_account = google_service_account.eventarc.email

  deletion_protection = false # set to "true" in production

  # Note that $$ is needed for Terraform
  source_contents = <<EOF
  main:
    params: [event]
    steps:
      - log_event:
          call: sys.log
          args:
            text: $${event}
            severity: INFO
      - gather_data:
          assign:
            - bucket: $${event.data.bucket}
            - name: $${event.data.name}
            - message: $${"Received event " + event.type + " - " + bucket + ", " + name}
      - return_data:
          return: $${message}
  EOF

  depends_on = [
    google_project_service.workflows
  ]
}

Menentukan pemicu Eventarc

Pemicu Eventarc merutekan peristiwa dari penyedia peristiwa ke tujuan peristiwa. Gunakan resource google_eventarc_trigger untuk menentukan atribut CloudEvents di matching_criteria dan memfilter peristiwa. Untuk mengetahui informasi selengkapnya, ikuti petunjuk saat membuat pemicu untuk penyedia, jenis peristiwa, dan tujuan tertentu. Peristiwa yang cocok dengan semua filter akan dikirim ke tujuan.

Cloud Run

Buat pemicu Eventarc yang merutekan peristiwa Cloud Storage ke layanan Cloud Run hello-event.

# Create an Eventarc trigger, routing Cloud Storage events to Cloud Run
resource "google_eventarc_trigger" "default" {
  name     = "trigger-storage-cloudrun-tf"
  location = google_cloud_run_v2_service.default.location

  # Capture objects changed in the bucket
  matching_criteria {
    attribute = "type"
    value     = "google.cloud.storage.object.v1.finalized"
  }
  matching_criteria {
    attribute = "bucket"
    value     = google_storage_bucket.default.name
  }

  # Send events to Cloud Run
  destination {
    cloud_run_service {
      service = google_cloud_run_v2_service.default.name
      region  = google_cloud_run_v2_service.default.location
    }
  }

  # Specify a single delivery attempt with no retries
  retry_policy {
    max_attempts = 1
  }

  service_account = google_service_account.default.email
  depends_on = [
    google_project_service.eventarc,
    google_storage_bucket.default,
    google_project_iam_member.pubsubpublisher
  ]
}

GKE

Buat pemicu Eventarc yang merutekan peristiwa Cloud Storage ke layanan GKE hello-gke.

# Create an Eventarc trigger, routing Storage events to GKE
resource "google_eventarc_trigger" "default" {
  name     = "trigger-storage-gke-tf"
  location = "us-central1"

  # Capture objects changed in the bucket
  matching_criteria {
    attribute = "type"
    value     = "google.cloud.storage.object.v1.finalized"
  }
  matching_criteria {
    attribute = "bucket"
    value     = google_storage_bucket.default.name
  }

  # Send events to GKE service
  destination {
    gke {
      cluster   = "eventarc-cluster"
      location  = "us-central1"
      namespace = "default"
      path      = "/"
      service   = "hello-gke"
    }
  }

  service_account = google_service_account.eventarc_gke_trigger_sa.email
}

Workflows

Buat pemicu Eventarc yang merutekan peristiwa Cloud Storage ke alur kerja bernama storage-workflow-tf.

# Create an Eventarc trigger, routing Cloud Storage events to Workflows
resource "google_eventarc_trigger" "default" {
  name     = "trigger-storage-workflows-tf"
  location = google_workflows_workflow.default.region

  # Capture objects changed in the bucket
  matching_criteria {
    attribute = "type"
    value     = "google.cloud.storage.object.v1.finalized"
  }
  matching_criteria {
    attribute = "bucket"
    value     = google_storage_bucket.default.name
  }

  # Send events to Workflows
  destination {
    workflow = google_workflows_workflow.default.id
  }

  service_account = google_service_account.eventarc.email

  depends_on = [
    google_project_service.eventarc,
    google_project_service.workflows,
  ]
}

Terapkan Terraform

Gunakan Terraform CLI untuk menyediakan infrastruktur berdasarkan file konfigurasi.

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

  1. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.

    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade
  2. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:

    terraform plan

    Koreksi konfigurasi jika diperlukan.

  3. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

Memverifikasi pembuatan resource

Cloud Run

  1. Konfirmasi bahwa layanan telah dibuat:

    gcloud run services list --region us-central1
    
  2. Pastikan pemicu telah dibuat:

    gcloud eventarc triggers list --location us-central1
    

    Outputnya akan mirip dengan berikut ini:

    NAME: trigger-storage-cloudrun-tf
    TYPE: google.cloud.storage.object.v1.finalized
    DESTINATION: Cloud Run service: hello-events
    ACTIVE: Yes
    LOCATION: us-central1
    

GKE

  1. Konfirmasi bahwa layanan telah dibuat:

    kubectl get service hello-gke
    
  2. Pastikan pemicu telah dibuat:

    gcloud eventarc triggers list --location us-central1
    

    Outputnya akan mirip dengan berikut ini:

    NAME: trigger-storage-gke-tf
    TYPE: google.cloud.storage.object.v1.finalized
    DESTINATION: GKE: hello-gke
    ACTIVE: Yes
    LOCATION: us-central1
    

Workflows

  1. Pastikan alur kerja telah dibuat:

    gcloud workflows list --location us-central1
    
  2. Pastikan pemicu Eventarc telah dibuat:

    gcloud eventarc triggers list --location us-central1
    

    Outputnya akan mirip dengan berikut ini:

    NAME: trigger-storage-workflows-tf
    TYPE: google.cloud.storage.object.v1.finalized
    DESTINATION: Workflows: storage-workflow-tf
    ACTIVE: Yes
    LOCATION: us-central1
    

Membuat dan melihat peristiwa

Anda dapat membuat peristiwa dan mengonfirmasi bahwa pemicu Eventarc berfungsi seperti yang diharapkan.

  1. Ambil nama bucket Cloud Storage yang Anda buat sebelumnya:

    gcloud storage ls
    
  2. Upload file teks ke bucket Cloud Storage:

    echo "Hello World" > random.txt
    gcloud storage cp random.txt gs://BUCKET_NAME/random.txt
    

    Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda ambil di langkah sebelumnya. Contoh:

    gcloud storage cp random.txt gs://BUCKET_NAME/random.txt

    Hasil upload ini akan membuat peristiwa dan layanan penerima peristiwa akan mencatat pesan peristiwa tersebut ke dalam log.

  3. Verifikasi bahwa peristiwa diterima:

    Cloud Run

    1. Memfilter entri log yang dibuat oleh layanan Anda:

      gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.storage.object.v1.finalized."'
      
    2. Cari entri log yang mirip dengan berikut ini:

      Received event of type google.cloud.storage.object.v1.finalized.
      Event data: { "kind": "storage#object", "id": "trigger-cloudrun-BUCKET_NAME/random.txt", ...}
      

    GKE

    1. Temukan ID pod:

      POD_NAME=$(kubectl get pods -o custom-columns=":metadata.name" --no-headers)
      

      Perintah ini menggunakan output berformat kubectl.

    2. Periksa log pod:

      kubectl logs $POD_NAME
      
    3. Cari entri log yang mirip dengan berikut ini:

      {"severity":"INFO","eventType":"google.cloud.storage.object.v1.finalized","message":
      "Received event of type google.cloud.storage.object.v1.finalized. Event data: ...}
      

    Workflows

    1. Verifikasi bahwa eksekusi alur kerja dipicu dengan mencantumkan lima eksekusi terakhir:

      gcloud workflows executions list storage-workflow-tf --limit=5
      

      Output harus menyertakan daftar eksekusi dengan NAME, STATE, START_TIME, dan END_TIME.

    2. Dapatkan hasil untuk eksekusi terbaru:

      EXECUTION_NAME=$(gcloud workflows executions list storage-workflow-tf --limit=1 --format "value(name)")
      gcloud workflows executions describe $EXECUTION_NAME
      
    3. Pastikan output-nya mirip dengan berikut ini:

      ...
      result: '"Received event google.cloud.storage.object.v1.finalized - BUCKET_NAME, random.txt"'
      startTime: '2024-12-13T17:23:50.451316533Z'
      state: SUCCEEDED
      ...
      

Pembersihan

Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

terraform destroy

Anda juga dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.

  1. Di Konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Langkah berikutnya