Créer des déclencheurs à partir d'événements Pub/Sub

Dans Cloud Run, vous pouvez déclencher des services en réponse à des messages Pub/Sub à l'aide d'Eventarc. Quand vous spécifiez un déclencheur Pub/Sub pour votre service, vous indiquez aussi un sujet Pub/Sub. En conséquence, votre service est appelé chaque fois que vous publiez un message dans le sujet spécifié.

Le dépôt Google Events contient des ressources supplémentaires sur l'utilisation des données d'événement.

Avant de commencer

  1. Assurez-vous d'avoir configuré un nouveau projet pour Cloud Run, comme décrit sur la page de configuration.

  2. Activez les API Artifact Registry, Cloud Build, Cloud Run Admin, Eventarc, Cloud Logging et Pub/Sub :

    Activer les API

  3. Accordez les rôles et autorisations IAM requis.

Rôles requis pour le compte déployeur

Pour obtenir les autorisations nécessaires pour déclencher des événements Pub/Sub, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Notez que par défaut, Cloud Build les autorisations incluent des autorisations permettant d'importer et de télécharger des artefacts Artifact Registry.

Créer un déclencheur pour les services

Après avoir déployé un service, vous pouvez configurer un déclencheur à l'aide de la Google Cloud console, Google Cloud CLI, ou de Terraform.

Console

  1. Déployez votre service Cloud Run à l'aide de conteneurs ou à partir de la source.

  2. Dans la Google Cloud console, accédez à Cloud Run :

    Accédez à Cloud Run

  3. Dans la liste des services, cliquez sur un service existant.

  4. Sur la page d'informations sur le service, accédez à l'onglet Déclencheurs.

  5. Cliquez sur Ajouter un déclencheur, puis sélectionnez Déclencheur Pub/Sub.

  6. Dans le volet Déclencheur Eventarc, modifiez les détails du déclencheur comme suit :

    1. Dans le champ Nom du déclencheur , saisissez un nom pour le déclencheur ou utilisez le nom par défaut.

    2. Sélectionnez un Type de déclencheur dans la liste pour spécifier l'un des types de déclencheur suivants :

      • Sources Google pour spécifier des déclencheurs pour Pub/Sub, Cloud Storage, Firestore et d'autres fournisseurs d'événements Google.

      • Tiers pour intégrer des fournisseurs autres que Google qui proposent une source Eventarc. Pour en savoir plus, consultez la section Événements tiers dans Eventarc.

    3. Sélectionnez Pub/Sub dans la liste Fournisseur d'événements pour sélectionner un produit qui fournit le type d'événement permettant de déclencher votre service. Pour obtenir la liste des fournisseurs d'événements, consultez la section Fournisseurs et destinations d'événements.

    4. Sélectionnez google.cloud.pubsub.topic.v1.messagePublished dans la liste Type d'événement. La configuration du déclencheur varie en fonction du type d'événement accepté : Pour en savoir plus, consultez la section Types d'événements.

    5. Dans le champ Sélectionner un sujet Cloud Pub/Sub, choisissez un sujet que le déclencheur doit surveiller. Les messages que vous publiez dans ce sujet déclenchent des appels vers votre fonction.

    6. Si le champ Région est activé, sélectionnez un emplacement pour le déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la ressource dont Google Cloud vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre service dans la même région. Consultez la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.

    7. Dans le champ Compte de service, sélectionnez un compte de service. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre service. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre service. Par défaut, Cloud Run utilise le compte de service Compute Engine par défaut.

    8. Vous pouvez éventuellement spécifier le chemin d'URL du service auquel envoyer la requête entrante. Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Par exemple : /, /route, route et route/subroute.

    9. Vous pouvez également cocher la case Activer la nouvelle tentative en cas d'échec pour activer les nouvelles tentatives si la tentative de livraison échoue. Sinon, le comportement par défaut est une seule tentative de livraison sans nouvelle tentative. Pour en savoir plus, consultez la section Événements de nouvelle tentative.

    10. Une fois les champs obligatoires renseignés, cliquez sur Enregistrer le déclencheur.

  7. Après avoir créé le déclencheur, vous pouvez vérifier son état en vous assurant qu' une coche s'affiche dans l'onglet Déclencheurs.

gcloud

  1. Déployez votre service Cloud Run à l'aide de conteneurs ou à partir de la source.

  2. Exécutez la commande suivante pour créer un déclencheur qui filtre et achemine les événements :

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=DESTINATION_RUN_SERVICE  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Remplacez les éléments suivants :

    • TRIGGER_NAME: l'ID du déclencheur ou un identifiant complet.
    • LOCATION : l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

      Pour éviter tout problème de performances et de résidence des données, l'emplacement doit correspondre à celui du Google Cloud service qui génère les événements. Pour en savoir plus, consultez la page Emplacements Eventarc.

    • DESTINATION_RUN_SERVICE : nom du service Cloud Run qui reçoit les événements pour le déclencheur. Le service peut se trouver dans l'un des emplacements compatibles avec Cloud Run et ne doit pas nécessairement se trouver au même emplacement que le déclencheur. Cependant, le service doit se trouver dans le même projet que le déclencheur et recevoir des événements sous forme de requêtes HTTP POST envoyées à son chemin d'URL racine (/), à chaque déclenchement de l'événement.
    • DESTINATION_RUN_REGION : (facultatif) emplacement Cloud Run dans lequel se trouve le service Cloud Run de destination. Si elle n'est pas spécifiée, il est supposé que le service se trouve dans la même région que le déclencheur.
    • L'option --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" est obligatoire et ne peut pas être modifiée. Pour un type d'événement différent, vous devez créer un déclencheur.
    • TOPIC_IDcorrespond à l'ID du sujet Pub/Sub existant. Le sujet doit se trouver dans le même projet que le déclencheur.
    • SERVICE_ACCOUNT_NAME : nom de votre compte de service géré par l'utilisateur.
    • PROJECT_ID: ID de votre Google Cloud projet.

    Remarques :

    • Vous pouvez également spécifier une seule tentative de livraison d'événement sans nouvelle tentative à l'aide de l'option --max-retry-attempts. La seule valeur valide est 1. Si vous omettez l' option, le comportement de nouvelle tentative standard s'applique. Pour en savoir plus, consultez la section Événements de nouvelle tentative.
    • D'autres options sont disponibles. Pour en savoir plus, consultez gcloud eventarc triggers create.

Terraform

Pour créer un déclencheur Eventarc pour un service Cloud Run, consultez la page Créer un déclencheur à l'aide de Terraform.

Créer un déclencheur pour les fonctions

Après avoir déployé une fonction, vous pouvez configurer un déclencheur à l'aide de la Google Cloud console, Google Cloud CLI, ou de Terraform.

Console

Lorsque vous utilisez la Google Cloud console pour créer une fonction, vous pouvez également y ajouter un déclencheur. Pour créer un déclencheur pour votre fonction, procédez comme suit :

  1. Dans la Google Cloud console, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Écrire une fonction, puis saisissez les détails de la fonction. Pour en savoir plus sur la configuration des fonctions lors du déploiement, consultez la section Déployer des fonctions.

  3. Dans la section Déclencheur, cliquez sur Ajouter un déclencheur.

  4. Sélectionnez Déclencheur Pub/Sub.

  5. Dans le volet Déclencheur Eventarc, modifiez les détails du déclencheur comme suit :

    1. Saisissez un nom pour le déclencheur dans le champ Nom du déclencheur ou utilisez le nom par défaut.

    2. Sélectionnez un Type de déclencheur dans la liste :

      • Sources Google pour spécifier des déclencheurs pour Pub/Sub, Cloud Storage, Firestore et d'autres fournisseurs d'événements Google.

      • Tiers pour intégrer des fournisseurs autres que Google qui proposent une source Eventarc. Pour en savoir plus, consultez la section Événements tiers dans Eventarc.

    3. Sélectionnez Pub/Sub dans la liste Fournisseur d'événements pour sélectionner un produit qui fournit le type d'événement permettant de déclencher votre fonction. Pour obtenir la liste des fournisseurs d'événements, consultez la section Fournisseurs et destinations d'événements.

    4. Sélectionnez google.cloud.pubsub.topic.v1.messagePublished dans la liste Type d'événement. La configuration du déclencheur varie en fonction du type d'événement accepté : Pour en savoir plus, consultez la section Types d'événements.

    5. Dans le champ Sélectionner un sujet Cloud Pub/Sub, choisissez un sujet que le déclencheur doit surveiller. Les messages que vous publiez dans ce sujet déclenchent des appels vers votre fonction.

    6. Si le champ Région est activé, sélectionnez un emplacement pour le déclencheur Eventarc. En général, l'emplacement d'un déclencheur Eventarc doit correspondre à celui de la Google Cloud ressource dont vous souhaitez surveiller les événements. Dans la plupart des scénarios, vous devez également déployer votre fonction dans la même région. Consultez la section Comprendre les emplacements Eventarc pour en savoir plus sur les emplacements des déclencheurs Eventarc.

    7. Dans le champ Compte de service, sélectionnez un compte de service. Les déclencheurs Eventarc sont associés à des comptes de service, destinés à être utilisés comme identité lors de l'appel de votre fonction. Le compte de service de votre déclencheur Eventarc doit être autorisé à appeler votre fonction. Par défaut, Cloud Run utilise le compte de service Compute Engine par défaut.

    8. Vous pouvez éventuellement spécifier le chemin d'URL du service auquel envoyer la requête entrante. Il s'agit du chemin relatif sur le service de destination auquel les événements du déclencheur doivent être envoyés. Par exemple : /, /route, route et route/subroute.

    9. Vous pouvez également cocher la case Activer la nouvelle tentative en cas d'échec pour activer les nouvelles tentatives si la tentative de livraison échoue. Sinon, le comportement par défaut est une seule tentative de livraison sans nouvelle tentative. Pour en savoir plus, consultez la section Événements de nouvelle tentative.

  6. Une fois les champs obligatoires renseignés, cliquez sur Enregistrer le déclencheur.

  7. Cliquez sur Créer.

  8. Dans l'onglet Source, modifiez le code source si nécessaire, puis sélectionnez Enregistrer et redéployer.

gcloud

Lorsque vous créez une fonction à l'aide de gcloud CLI, vous devez d'abord la déployer, puis créer un déclencheur. Pour créer un déclencheur pour votre fonction, procédez comme suit :

  1. Exécutez la commande suivante dans le répertoire contenant l'exemple de code pour déployer votre fonction :

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image BASE_IMAGE_ID \
        --region REGION
    

    Remplacez les éléments suivants :

    • FUNCTION: nom de la fonction que vous déployez. Vous pouvez omettre ce paramètre, mais dans ce cas le nom vous sera demandé.

    • FUNCTION_ENTRYPOINT: point d'entrée de votre fonction dans votre code source. Il s'agit du code que Cloud Run exécute lors de l'exécution de votre fonction. La valeur de cette option doit être un nom de fonction ou un nom de classe complet qui existe dans votre code source.

    • BASE_IMAGE_ID: environnement d'image de base pour votre fonction. Pour en savoir plus sur les images de base et les packages inclus dans chaque image, consultez la section Images de base des environnements d'exécution.

    • REGION: the Google Cloud region where you want to deploy your function. Exemple : europe-west1.

  2. Exécutez la commande suivante pour créer un déclencheur qui filtre et achemine les événements :

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=FUNCTION  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --transport-topic=projects/PROJECT_ID/topics/TOPIC_ID \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Remplacez les éléments suivants :

    • TRIGGER_NAME: l'ID du déclencheur ou un identifiant complet.
    • LOCATION : l'emplacement du déclencheur Eventarc. Vous pouvez également définir la propriété eventarc/location (par exemple, gcloud config set eventarc/location us-central1).

      Pour éviter tout problème de performances et de résidence des données, l'emplacement doit correspondre à celui du Google Cloud service qui génère les événements. Pour en savoir plus, consultez la page Emplacements Eventarc.

    • FUNCTION : nom de la fonction Cloud Run déployée qui reçoit les événements pour le déclencheur.
    • DESTINATION_RUN_REGION : (facultatif) emplacement Cloud Run dans lequel se trouve la fonction Cloud Run de destination. Si elle n'est spécifiée, il est supposé que la fonction se trouve dans la même région que le déclencheur.
    • L'option --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" est obligatoire et ne peut pas être modifiée. Pour un type d'événement différent, vous devez créer un déclencheur.
    • TOPIC_IDcorrespond à l'ID du sujet Pub/Sub existant. Le sujet doit se trouver dans le même projet que le déclencheur.
    • SERVICE_ACCOUNT_NAME : nom de votre compte de service géré par l'utilisateur.
    • PROJECT_ID: ID de votre Google Cloud projet.

    Remarques :

    • Vous pouvez également spécifier une seule tentative de livraison d'événement sans nouvelle tentative à l'aide de l'option --max-retry-attempts. La seule valeur valide est 1. Si vous omettez l' option, le comportement de nouvelle tentative standard s'applique. Pour en savoir plus, consultez la section Événements de nouvelle tentative.
    • D'autres options sont disponibles. Pour en savoir plus, consultez gcloud eventarc triggers create.

Terraform

Pour créer un déclencheur Eventarc pour une fonction Cloud Run, consultez la page Créer un déclencheur à l'aide de Terraform.

Étapes suivantes