Creare un trigger utilizzando Terraform

Questo documento descrive come utilizzare Terraform e la risorsa google_eventarc_trigger per creare trigger Eventarc per le seguenti destinazioni Google Cloud:

Per saperne di più sull'utilizzo di Terraform, consulta la documentazione Terraform su Google Cloud.

Gli esempi di codice in questa guida indirizzano gli eventi diretti da Cloud Storage, ma possono essere adattati a qualsiasi provider di eventi. Ad esempio, per scoprire come instradare gli eventi diretti da Pub/Sub a Cloud Run, consulta la guida rapida di Terraform.

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei 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. Abilita le API Cloud Resource Manager e Identity and Access Management (IAM).

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin), che include l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  7. Nella console Google Cloud , attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installata e con valori già impostati per il progetto corrente. L'inizializzazione della sessione può richiedere alcuni secondi.

  8. Terraform è integrato nell'ambiente Cloud Shell e puoi utilizzare Cloud Shell per eseguire il deployment delle risorse Terraform senza dover installare Terraform.

Prepararsi a eseguire il deployment di Terraform

Prima di eseguire il deployment di qualsiasi risorsa Terraform, devi creare un file di configurazione Terraform. Un file di configurazione Terraform ti consente di definire lo stato finale preferito per la tua infrastruttura utilizzando la sintassi Terraform.

Prepara Cloud Shell

In Cloud Shell, imposta il progetto Google Cloud predefinito in cui vuoi applicare le configurazioni Terraform. Devi eseguire questo comando una sola volta per progetto e puoi eseguirlo in qualsiasi directory:

export GOOGLE_CLOUD_PROJECT=PROJECT_ID

Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud .

Tieni presente che le variabili di ambiente vengono sostituite se imposti valori espliciti nel file di configurazione Terraform.

Prepara la directory

Ogni file di configurazione Terraform deve avere la propria directory (chiamata anche modulo radice). In Cloud Shell, crea una directory e un nuovo file al suo interno:

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

Il nome file deve avere l'estensione .tf. Ad esempio, in questo documento il file viene chiamato main.tf.

Definisci la configurazione Terraform

Copia gli esempi di codice Terraform applicabili nel file main.tf appena creato. (Facoltativo) Puoi copiare il codice da GitHub. Questa opzione è consigliata quando lo snippet Terraform fa parte di una soluzione end-to-end.

In genere, applichi l'intera configurazione contemporaneamente. Tuttavia, puoi anche scegliere come target una risorsa specifica. Ad esempio:

terraform apply -target="google_eventarc_trigger.default"

Tieni presente che gli esempi di codice Terraform utilizzano l'interpolazione per sostituzioni come variabili di riferimento, attributi delle risorse e chiamate di funzioni.

Abilita API

Gli esempi di Terraform in genere presuppongono che le API richieste siano abilitate nel tuo progettoGoogle Cloud . Utilizza il seguente codice per abilitare le 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
}

Workflow

# 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
}

Crea un account di servizio e configura il relativo accesso

Ogni trigger Eventarc è associato a un account di servizio IAM al momento della creazione del trigger. Utilizza il seguente codice per creare unaccount di serviziot dedicato e concedere alaccount di serviziot gestito dall'utente ruoli Identity and Access Management specifici per gestire gli eventi:

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}"
}

L'agente di servizio Pub/Sub viene creato automaticamente quando l'API Pub/Sub è abilitata. Se l'agente di servizio Pub/Sub è stato creato l'8 aprile 2021 o in una data precedente e l'account di servizio non dispone del ruolo Agente di servizio Cloud Pub/Sub (roles/pubsub.serviceAgent), concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio. Per saperne di più, consulta Creare e concedere ruoli agli agenti di servizio.

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. Prima di creare il account di servizio, consenti a Eventarc di gestire i 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. Crea l'account di servizio:

    # 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}"
    }
    

Workflow

# 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}"
}

L'agente di servizio Pub/Sub viene creato automaticamente quando l'API Pub/Sub è abilitata. Se l'agente di servizio Pub/Sub è stato creato l'8 aprile 2021 o in una data precedente e l'account di servizio non dispone del ruolo Agente di servizio Cloud Pub/Sub (roles/pubsub.serviceAgent), concedi il ruolo Creatore token account di servizio (roles/iam.serviceAccountTokenCreator) all'agente di servizio. Per saperne di più, consulta Creare e concedere ruoli agli agenti di servizio.

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"
}

Creare un bucket Cloud Storage come fornitore di eventi

Utilizza il seguente codice per creare un bucket Cloud Storage e concedi il ruolo Pub/Sub Publisher (roles/pubsub.publisher) al service agent 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}"
}

Workflow

# 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}"
}

Crea un ricevitore di eventi come destinazione dell'evento

Crea un ricevitore di eventi utilizzando una delle seguenti risorse Terraform:

Cloud Run

Crea un servizio Cloud Run come destinazione evento per il trigger 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

Per semplificare questa guida, crea un servizio Google Kubernetes Engine come destinazione eventi al di fuori di Terraform, tra l'applicazione delle configurazioni Terraform.

  1. Se non hai mai creato un trigger in questo progetto Google Cloud , esegui il seguente comando per creare l'agente di servizio Eventarc:

    gcloud beta services identity create --service eventarc.googleapis.com
  2. Crea un 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. Esegui il deployment di un servizio Kubernetes su GKE che riceverà richieste HTTP e registrerà gli eventi utilizzando un'immagine Cloud Run predefinita,us-docker.pkg.dev/cloudrun/container/hello:

    1. Recupera le credenziali di autenticazione per interagire con il cluster:

      gcloud container clusters get-credentials eventarc-cluster \
         --region=us-central1
      
    2. Crea un deployment denominato hello-gke:

      kubectl create deployment hello-gke \
         --image=us-docker.pkg.dev/cloudrun/container/hello
      
    3. Esporre il deployment come servizio Kubernetes:

      kubectl expose deployment hello-gke \
         --type ClusterIP --port 80 --target-port 8080
      
    4. Assicurati che il pod sia in esecuzione:

      kubectl get pods
      

      L'output dovrebbe essere simile al seguente:

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

      Se STATUS è Pending o ContainerCreating, il pod è in fase di deployment. Attendi un minuto per il completamento del deployment e controlla di nuovo lo stato.

    5. Assicurati che il servizio sia in esecuzione:

      kubectl get svc
      

      L'output dovrebbe essere simile al seguente:

      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
      

Workflow

Esegui il deployment di un flusso di lavoro che viene eseguito quando un oggetto viene aggiornato nel 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
  ]
}

Definisci un trigger Eventarc

Un trigger Eventarc indirizza gli eventi da un provider di eventi a una destinazione di eventi. Utilizza la risorsa google_eventarc_trigger per specificare gli attributi CloudEvents in matching_criteria e filtrare gli eventi. Per ulteriori informazioni, segui le istruzioni quando crei un trigger per un fornitore, un tipo di evento e una destinazione specifici. Gli eventi che corrispondono a tutti i filtri vengono inviati alla destinazione.

Cloud Run

Crea un trigger Eventarc che indirizza gli eventi di Cloud Storage al servizio 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

Crea un trigger Eventarc che instrada gli eventi di Cloud Storage al servizio 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
}

Workflow

Crea un trigger Eventarc che indirizza gli eventi di Cloud Storage al flusso di lavoro denominato 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,
  ]
}

Applica Terraform

Utilizza l'interfaccia a riga di comando di Terraform per eseguire il provisioning dell'infrastruttura in base al file di configurazione.

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

  1. Inizializza Terraform. Devi eseguire questa operazione una sola volta per directory.

    terraform init

    (Facoltativo) Per utilizzare l'ultima versione del provider Google, includi l'opzione -upgrade:

    terraform init -upgrade
  2. Rivedi la configurazione e verifica che le risorse che Terraform creerà o aggiornerà corrispondano alle tue aspettative:

    terraform plan

    Apporta le correzioni necessarie alla configurazione.

  3. Applica la configurazione Terraform eseguendo il seguente comando e inserendo yes al prompt:

    terraform apply

    Attendi che Terraform visualizzi il messaggio "Apply complete!".

Verifica la creazione delle risorse

Cloud Run

  1. Verifica che il servizio sia stato creato:

    gcloud run services list --region us-central1
    
  2. Verifica che il trigger sia stato creato:

    gcloud eventarc triggers list --location us-central1
    

    L'output dovrebbe essere simile al seguente:

    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. Verifica che il servizio sia stato creato:

    kubectl get service hello-gke
    
  2. Verifica che il trigger sia stato creato:

    gcloud eventarc triggers list --location us-central1
    

    L'output dovrebbe essere simile al seguente:

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

Workflow

  1. Verifica che il flusso di lavoro sia stato creato:

    gcloud workflows list --location us-central1
    
  2. Verifica che il trigger Eventarc sia stato creato:

    gcloud eventarc triggers list --location us-central1
    

    L'output dovrebbe essere simile al seguente:

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

Generare e visualizzare un evento

Puoi generare un evento e verificare che il trigger Eventarc funzioni come previsto.

  1. Recupera il nome del bucket Cloud Storage che hai creato in precedenza:

    gcloud storage ls
    
  2. Carica un file di testo nel bucket Cloud Storage:

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

    Sostituisci BUCKET_NAME con il nome del bucket Cloud Storage recuperato nel passaggio precedente. Ad esempio:

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

    Il caricamento genera un evento e il servizio di ricezione di eventi registra il messaggio dell'evento.

  3. Verifica che un evento sia stato ricevuto:

    Cloud Run

    1. Filtra le voci di log create dal tuo servizio:

      gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.storage.object.v1.finalized."'
      
    2. Cerca una voce di log simile alla seguente:

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

    GKE

    1. Trova l'ID pod:

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

      Questo comando utilizza l'output formattato di kubectl.

    2. Controlla i log del pod:

      kubectl logs $POD_NAME
      
    3. Cerca una voce di log simile alla seguente:

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

    Workflow

    1. Verifica che un'esecuzione dei workflow venga attivata elencando le ultime cinque esecuzioni:

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

      L'output deve includere un elenco di esecuzioni con NAME, STATE, START_TIME e END_TIME.

    2. Visualizza i risultati dell'esecuzione più recente:

      EXECUTION_NAME=$(gcloud workflows executions list storage-workflow-tf --limit=1 --format "value(name)")
      gcloud workflows executions describe $EXECUTION_NAME
      
    3. Verifica che l'output sia simile al seguente:

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

Esegui la pulizia

Rimuovi le risorse applicate in precedenza con la configurazione Terraform eseguendo il comando seguente e inserendo yes al prompt:

terraform destroy

Puoi anche eliminare il tuo progetto Google Cloud per evitare addebiti. L'eliminazione del tuo progetto Google Cloud interrompe la fatturazione per tutte le risorse utilizzate al suo interno.

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona quello che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi