Créer un déclencheur à l'aide de Terraform

Ce document explique comment utiliser Terraform et la ressource google_eventarc_trigger pour créer des déclencheurs Eventarc pour les destinations Google Cloudsuivantes:

Pour en savoir plus sur l'utilisation de Terraform, consultez la documentation Terraform sur Google Cloud.

Les exemples de code de ce guide acheminent des événements directs à partir de Cloud Storage, mais peuvent être adaptés à n'importe quel fournisseur d'événements. Par exemple, pour découvrir comment acheminer des événements directs de Pub/Sub vers Cloud Run, consultez le guide de démarrage rapide de Terraform.

Avant de commencer

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

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs.

    Enable the APIs

  7. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  8. Terraform est intégré à l'environnement Cloud Shell. Vous pouvez utiliser Cloud Shell pour déployer vos ressources Terraform sans avoir à installer Terraform.

Préparer le déploiement de Terraform

Avant de déployer des ressources Terraform, vous devez créer un fichier de configuration Terraform. Un fichier de configuration Terraform vous permet de définir l'état final souhaité pour votre infrastructure à l'aide de la syntaxe Terraform.

Préparer Cloud Shell

Dans Cloud Shell, définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform. Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire:

export GOOGLE_CLOUD_PROJECT=PROJECT_ID

Remplacez PROJECT_ID par l'ID de votre Google Cloud projet.

Notez que les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine). Dans Cloud Shell, créez un répertoire et un fichier dans ce répertoire:

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

Le nom du fichier doit comporter l'extension .tf. Par exemple, dans ce document, le fichier est appelé main.tf.

Définir votre configuration Terraform

Copiez les exemples de code Terraform applicables dans le fichier main.tf que vous venez de créer. Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

En règle générale, vous appliquez l'ensemble de la configuration en une seule fois. Toutefois, vous pouvez également cibler une ressource spécifique. Exemple :

terraform apply -target="google_eventarc_trigger.default"

Notez que les exemples de code Terraform utilisent l'interpolation pour les substitutions, telles que les variables de référence, les attributs de ressources et les fonctions d'appel.

Activer les API

Les exemples Terraform partent généralement du principe que les API requises sont activées dans votre projetGoogle Cloud . Utilisez le code suivant pour activer les 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
}

Créer un compte de service et configurer son accès

Chaque déclencheur Eventarc est associé à un compte de service IAM au moment de sa création. Utilisez le code suivant pour créer un compte de service dédié et attribuer au compte de service géré par l'utilisateur des rôles Identity and Access Management spécifiques pour gérer les événements:

Cloud Run

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

# Create a dedicated service account
resource "google_service_account" "eventarc" {
  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.eventarc.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.eventarc.email}"
}

L'agent de service Pub/Sub est créé automatiquement lorsque l'API Pub/Sub est activée. Si l'agent de service Pub/Sub a été créé le 8 avril 2021 ou avant cette date, et que le compte de service ne dispose pas du rôle Agent de service Cloud Pub/Sub (roles/pubsub.serviceAgent), attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) à l'agent de service. Pour en savoir plus, consultez la section Créer et attribuer des rôles aux agents de service.

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. Avant de créer le compte de service, activez Eventarc pour gérer les clusters 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. Créez le compte de service :

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

L'agent de service Pub/Sub est créé automatiquement lorsque l'API Pub/Sub est activée. Si l'agent de service Pub/Sub a été créé le 8 avril 2021 ou avant cette date, et que le compte de service ne dispose pas du rôle Agent de service Cloud Pub/Sub (roles/pubsub.serviceAgent), attribuez le rôle Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) à l'agent de service. Pour en savoir plus, consultez la section Créer et attribuer des rôles aux agents de service.

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

Créer un bucket Cloud Storage faisant office de fournisseur d'événements

Utilisez le code suivant pour créer un bucket Cloud Storage et attribuez le rôle Éditeur Pub/Sub (roles/pubsub.publisher) à l'agent de service 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}"
}

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

Créer un récepteur d'événements qui servira de cible d'événement

Créez un récepteur d'événements à l'aide de l'une des ressources Terraform suivantes:

Cloud Run

Créez un service Cloud Run en tant que destination d'événement pour le déclencheur 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.eventarc.email
  }

  depends_on = [google_project_service.run]
}

GKE

Pour simplifier ce guide, créez un service Google Kubernetes Engine en tant que destination d'événement en dehors de Terraform, entre l'application des configurations Terraform.

  1. Si vous n'avez jamais créé de déclencheur dans ce projet Google Cloud , exécutez la commande suivante pour créer l'agent de service Eventarc:

    gcloud beta services identity create --service eventarc.googleapis.com
  2. Créez 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. Déployez sur GKE un service Kubernetes qui recevra les requêtes HTTP et les événements de journaux à l'aide d'une image Cloud Run prédéfinie, us-docker.pkg.dev/cloudrun/container/hello:

    1. Obtenez des identifiants d'authentification pour interagir avec le cluster :

      gcloud container clusters get-credentials eventarc-cluster \
         --region=us-central1
      
    2. Créez un déploiement nommé hello-gke:

      kubectl create deployment hello-gke \
         --image=us-docker.pkg.dev/cloudrun/container/hello
      
    3. Exposez le déploiement en tant que service Kubernetes:

      kubectl expose deployment hello-gke \
         --type ClusterIP --port 80 --target-port 8080
      
    4. Assurez-vous que le pod est en cours d'exécution:

      kubectl get pods
      

      La sortie devrait ressembler à ce qui suit :

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

      Si l'état (STATUS) est défini sur Pending ou ContainerCreating, le pod est en cours de déploiement. Attendez une minute pour que le déploiement soit terminé, puis vérifiez à nouveau l'état.

    5. Assurez-vous que le service est en cours d'exécution:

      kubectl get svc
      

      La sortie devrait ressembler à ce qui suit :

      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

Déployez un workflow qui s'exécute lorsqu'un objet est mis à jour dans le 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
  ]
}

Définir un déclencheur Eventarc

Un déclencheur Eventarc achemine les événements d'un fournisseur d'événements vers une destination d'événement. Utilisez la ressource google_eventarc_trigger pour spécifier des attributs CloudEvents dans matching_criteria et filtrer les événements. Pour en savoir plus, suivez les instructions lors de la création d'un déclencheur pour un fournisseur, un type d'événement et une destination spécifiques. Seuls les événements correspondant à tous les filtres sont envoyés à la destination.

Cloud Run

Créer un déclencheur Eventarc qui achemine les événements Cloud Storage vers le service 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
    }
  }

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

GKE

Créer un déclencheur Eventarc qui achemine les événements Cloud Storage vers le service 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

Créez un déclencheur Eventarc qui achemine les événements Cloud Storage vers le workflow nommé 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,
  ]
}

Appliquer Terraform

Utilisez la CLI Terraform pour provisionner l'infrastructure en fonction du fichier de configuration.

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

  1. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.

    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade:

    terraform init -upgrade
  2. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes:

    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  3. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité:

    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

Vérifier la création des ressources

Cloud Run

  1. Vérifiez que le service a été créé:

    gcloud run services list --region us-central1
    
  2. Vérifiez que le déclencheur a été créé:

    gcloud eventarc triggers list --location us-central1
    

    La sortie devrait ressembler à ce qui suit :

    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. Vérifiez que le service a été créé:

    kubectl get service hello-gke
    
  2. Vérifiez que le déclencheur a été créé:

    gcloud eventarc triggers list --location us-central1
    

    La sortie devrait ressembler à ce qui suit :

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

Workflows

  1. Vérifiez que le workflow a bien été créé:

    gcloud workflows list --location us-central1
    
  2. Vérifiez que le déclencheur Eventarc a bien été créé:

    gcloud eventarc triggers list --location us-central1
    

    La sortie devrait ressembler à ce qui suit :

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

Générer et afficher un événement

Vous pouvez générer un événement et vérifier que le déclencheur Eventarc fonctionne comme prévu.

  1. Récupérez le nom du bucket Cloud Storage que vous avez créé précédemment:

    gcloud storage ls
    
  2. Importez un fichier texte dans le bucket Cloud Storage:

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

    Remplacez BUCKET_NAME par le nom du bucket Cloud Storage que vous avez récupéré à l'étape précédente. Exemple :

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

    L'importation génère un événement, et le service de destinataire d'événements consigne le message de l'événement.

  3. Vérifiez qu'un événement a été reçu:

    Cloud Run

    1. Filtrez les entrées de journal créées par votre service:

      gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.storage.object.v1.finalized."'
      
    2. Recherchez une entrée de journal semblable à ceci :

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

    GKE

    1. Recherchez l'ID du pod :

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

      Cette commande utilise le résultat formaté de kubectl.

    2. Vérifiez les journaux du pod:

      kubectl logs $POD_NAME
      
    3. Recherchez une entrée de journal semblable à ceci :

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

    Workflows

    1. Vérifiez qu'une exécution de workflow est déclenchée en répertoriant les cinq dernières exécutions:

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

      Le résultat doit inclure une liste d'exécutions avec les paramètres NAME, STATE, START_TIME et END_TIME.

    2. Obtenez les résultats pour l'exécution la plus récente:

      EXECUTION_NAME=$(gcloud workflows executions list storage-workflow-tf --limit=1 --format "value(name)")
      gcloud workflows executions describe $EXECUTION_NAME
      
    3. Vérifiez que le résultat ressemble à ce qui suit:

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

Effectuer un nettoyage

Supprimez les ressources précédemment appliquées à votre configuration Terraform en exécutant la commande suivante et en saisissant yes à la requête :

terraform destroy

Vous pouvez également supprimer votre projet Google Cloud pour éviter que des frais ne vous soient facturés. La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources utilisées dans ce projet.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étape suivante