Créer des déclencheurs avec Terraform

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce document explique comment utiliser les ressources Google Cloud dans Terraform pour créer des déclencheurs Eventarc.

Dans ce document, à l'aide de Terraform, vous allez :

  1. activer les API Cloud Run et Eventarc ;
  2. déployer un service Cloud Run accessible publiquement en tant que cible d'événement ;
  3. créer un déclencheur Pub/Sub Eventarc pour envoyer des événements au service récepteur d'événements, sur le service Cloud Run ;
  4. créer un déclencheur Eventarc pour filtrer les journaux d'audit et envoyer des événements Cloud Storage au service Cloud Run.

Pour obtenir des ressources et des conseils sur l'utilisation de Terraform, consultez la page Utiliser Terraform avec Google Cloud.

Avant de commencer

  1. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  3. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  4. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  5. Installez et initialisez Google Cloud CLI.
  6. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  7. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  8. Installez et initialisez Google Cloud CLI.
  9. Dans la console Google Cloud, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  10. Cloud Shell est un environnement shell dans lequel Terraform est déjà intégré.

  11. Téléchargez et installez l'outil de gestion du code source Git.

Créer des déclencheurs Eventarc

Déployez vos ressources avec Terraform pour créer des déclencheurs Eventarc à l'aide de Cloud Shell.

Activer les API Eventarc et Cloud Run

Utilisez le code suivant pour activer l'API Eventarc et les API Cloud Run :

# Used to retrieve project_number later
data "google_project" "project" {
  provider = google-beta
}

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

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

Définir un service Cloud Run en tant que cible d'événement

Créez un service Cloud Run en tant que destination d'événement pour le déclencheur. Utilisez la ressource google_cloud_run_service pour définir un service Cloud Run :


# Deploy Cloud Run service
resource "google_cloud_run_service" "default" {
  provider = google-beta
  name     = "cloudrun-hello-tf"
  location = "us-east1"

  template {
    spec {
      containers {
        image = "gcr.io/cloudrun/hello"
      }
    }
  }

  traffic {
    percent         = 100
    latest_revision = true
  }

  depends_on = [google_project_service.run]
}

# Make Cloud Run service publicly accessible
resource "google_cloud_run_service_iam_member" "allUsers" {
  provider = google-beta
  service  = google_cloud_run_service.default.name
  location = google_cloud_run_service.default.location
  role     = "roles/run.invoker"
  member   = "allUsers"
}

Définir un déclencheur Pub/Sub

Un déclencheur Pub/Sub connecte un sujet Pub/Sub à un service Cloud Run. Utilisez la ressource google_eventarc_trigger pour définir la ressource de déclencheur Pub/Sub :


# Create a Pub/Sub trigger
resource "google_eventarc_trigger" "trigger-pubsub-tf" {
  provider = google-beta
  name     = "trigger-pubsub-tf"
  location = google_cloud_run_service.default.location
  matching_criteria {
    attribute = "type"
    value     = "google.cloud.pubsub.topic.v1.messagePublished"
  }
  destination {
    cloud_run_service {
      service = google_cloud_run_service.default.name
      region  = google_cloud_run_service.default.location
    }
  }

  depends_on = [google_project_service.eventarc]
}

Définir un déclencheur Cloud Audit Logs

Un déclencheur Cloud Audit Logs connecte un service Google Cloud générant des journaux d'audit à un service Cloud Run. Attribuez le rôle eventarc.eventReceiver au compte de service Compute Engine par défaut et utilisez la ressource google_eventarc_trigger pour définir le déclencheur Cloud Audit Logs à associer aux événements Cloud Storage :


# Give default Compute service account eventarc.eventReceiver role
resource "google_project_iam_binding" "project" {
  provider = google-beta
  project = data.google_project.project.id
  role    = "roles/eventarc.eventReceiver"

  members = [
    "serviceAccount:${data.google_project.project.number}-compute@developer.gserviceaccount.com"
  ]
}

# Create an AuditLog for Cloud Storage trigger
resource "google_eventarc_trigger" "trigger-auditlog-tf" {
  provider = google-beta
  name     = "trigger-auditlog-tf"
  location = google_cloud_run_service.default.location
  project  = data.google_project.project.id
  matching_criteria {
    attribute = "type"
    value     = "google.cloud.audit.log.v1.written"
  }
  matching_criteria {
    attribute = "serviceName"
    value     = "storage.googleapis.com"
  }
  matching_criteria {
    attribute = "methodName"
    value     = "storage.objects.create"
  }
  destination {
    cloud_run_service {
      service = google_cloud_run_service.default.name
      region  = google_cloud_run_service.default.location
    }
  }
  service_account = "${data.google_project.project.number}-compute@developer.gserviceaccount.com"

  depends_on = [google_project_service.eventarc]
}

Vérifier la création des déclencheurs

Pour vérifier qu'un service Cloud Run et deux déclencheurs ont été créés, exécutez la commande suivante :

gcloud eventarc triggers list --location DESTINATION-RUN-REGION

La sortie devrait ressembler à ce qui suit :

NAME: trigger-auditlog-tf
TYPE: google.cloud.audit.log.v1.written
DESTINATION: Cloud Run service: cloudrun-hello-tf
ACTIVE: By 16:29:08

NAME: trigger-pubsub-tf
TYPE: google.cloud.pubsub.topic.v1.messagePublished
DESTINATION: Cloud Run service: cloudrun-hello-tf
ACTIVE: Yes

Effectuer un nettoyage

Vous pouvez supprimer toutes les ressources que vous avez créées avec Terraform à l'aide de la commande suivante:

terraform destroy -var="project_id=PROJECT-ID" -var="region=DESTINATION-RUN-REGION"

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

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étape suivante