Router les événements du gestionnaire de certificats vers Workflows

Un déclencheur Eventarc déclare votre intérêt pour un événement ou un ensemble d'événements spécifique. Vous pouvez configurer le routage d'événements en spécifiant des filtres pour le déclencheur, y compris la source de l'événement et le workflow cible.

Les événements sont envoyés au format CloudEvents via une requête HTTP. Le service Workflows convertit l'événement en objet JSON (conformément à la spécification CloudEvents) et transmet l'événement à l'exécution du workflow comme argument d'environnement d'exécution du workflow. Assurez-vous que la taille de l'événement ne dépasse pas 512 Ko. Les événements supérieurs à la taille maximale des arguments Workflows ne déclenchent pas d'exécution de workflow.

Ces instructions vous expliquent comment configurer le routage d'événements afin qu'une exécution de votre workflow soit déclenchée en réponse à un événementCertificate Manager direct. Pour en savoir plus, consultez la liste des événements directs compatibles.

Préparer la création d'un déclencheur

Avant de créer un déclencheur Eventarc pour un workflow cible, effectuez les tâches suivantes.

Console

  1. Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  2. Activez les API Eventarc, Eventarc Publishing, Workflows et Workflow Executions.

    Activer les API

  3. Le cas échéant, activez l'API associée aux événements directs. Par exemple, pour les événements Certificate Manager , activez l'APICertificate Manager .

  4. Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements pour un workflow cible.

    1. Dans la console Google Cloud, accédez à la page Comptes de service.

      Accéder à la page "Comptes de service"

    2. Sélectionnez votre projet.

    3. Dans le champ Nom du compte de service, saisissez un nom. La console Google Cloud remplit le champ ID du compte de service en fonction de ce nom.

      Dans le champ Description du compte de service, saisissez une description. Exemple : Service account for event trigger.

    4. Cliquez sur Créer et continuer.

    5. Pour fournir un accès approprié, dans la liste Sélectionner un rôle, sélectionnez les rôles IAM (Identity and Access Management) requis à attribuer à votre compte de service. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles Workflows.

      Pour ajouter des rôles supplémentaires, cliquez sur Ajouter un autre rôle et ajoutez chaque rôle supplémentaire.

    6. Cliquez sur Continuer.

    7. Pour terminer la création du compte, cliquez sur OK.

gcloud

  1. 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.

  2. Activez les API Eventarc, Eventarc Publishing, Workflows et Workflow Executions :

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com
    

  3. Le cas échéant, activez l'API associée aux événements directs. Par exemple, pour les événements Certificate Manager , activez certificatemanager.googleapis.com.

  4. Si vous n'en avez pas encore, créez un compte de service géré par l'utilisateur, puis accordez-lui les rôles et les autorisations nécessaires pour qu'Eventarc puisse gérer les événements pour un workflow cible.

    1. Créez le compte de service :

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Remplacez SERVICE_ACCOUNT_NAME par le nom du compte de service. Il doit comporter entre 6 et 30 caractères alphanumériques pouvant inclure des minuscules et des tirets. Une fois le compte de service créé, vous ne pouvez pas en modifier le nom.

    2. Attribuez les rôles ou les autorisations IAM (Identity and Access Management) requis. Pour en savoir plus, consultez la page Rôles et autorisations pour les cibles Workflows.

Créer un déclencheur

Vous pouvez créer un déclencheur Eventarc avec un workflow déployé en tant que récepteur d'événements à l'aide de Google Cloud CLI (gcloud ou Terraform) ou via la console Google Cloud.

Console

  1. Dans la console Google Cloud, accédez à la page Déclencheurs d'Eventarc.

    Accéder à la page "Déclencheurs"

  2. Cliquez sur Créer un déclencheur.
  3. Saisissez un nom de déclencheur

    Il s'agit de l'ID du déclencheur, qui doit commencer par une lettre. Il peut contenir jusqu'à 63 lettres minuscules, chiffres ou traits d'union.

  4. Pour le champ Type de déclencheur, sélectionnez Sources Google.
  5. Dans la liste Fournisseur d'événements, sélectionnez Certificate Manager.

    Notez que le nom du fournisseur d'événements utilisé dans la documentation Google Cloud associée peut ne pas avoir le préfixe Cloud ou Google Cloud. Par exemple, sur la console, Memorystore pour Redis est appelé Google Cloud Memorystore pour Redis.

  6. Dans la liste Type d'événement, sélectionnez un type d'événement parmi les événements directs.
  7. Pour spécifier l'encodage de la charge utile de l'événement, sélectionnez application/json ou application/protobuf dans la liste Type de contenu des données d'événement.

    Notez qu'une charge utile d'événement au format JSON est supérieure à celle au format Protobuf. Cela peut avoir un impact sur la fiabilité en fonction de la destination de l'événement et de ses limites de taille. Pour en savoir plus, consultez la section Problèmes connus.

  8. Dans la liste Région, sélectionnez global (Global).

    Pour en savoir plus, consultez la page Emplacements Eventarc.

  9. Le cas échéant, cliquez sur Ajouter un filtre et spécifiez les éléments suivants :
    1. Dans le champ Attribut 1, en fonction de l'événement direct que vous avez choisi, sélectionnez l'ID de ressource pouvant servir de filtre d'événement.
    2. Sélectionnez un opérateur :
    3. Dans le champ Valeur d'attribut 1, saisissez la valeur exacte ou appliquez un format de chemin d'accès en fonction de l'opérateur que vous avez choisi.
    4. Si d'autres filtres d'attributs sont applicables, cliquez sur Ajouter un filtre et spécifiez les valeurs appropriées.
  10. Sélectionnez le compte de service qui appellera votre service ou workflow.

    Vous pouvez également créer un nouveau compte de service.

    Cela spécifie l'adresse e-mail du compte de service Identity and Access Management (IAM) associée au déclencheur et auquel vous avez précédemment attribué les rôles spécifiques requis par Eventarc.

  11. Dans la liste Destination de l'événement, sélectionnez Workflows.
  12. Sélectionner un workflow.

    Il s'agit du nom du workflow auquel transmettre les événements. Les événements d'exécution d'un workflow sont transformés et transmis au workflow en tant qu'arguments d'environnement d'exécution.

    Pour en savoir plus, consultez la page Créer un déclencheur pour Workflows.

  13. Cliquez sur Créer.
  14. Une fois le déclencheur créé, vous ne pouvez plus modifier les filtres de source d'événement. À la place, vous devez créer un nouveau déclencheur et supprimer l'ancien. Pour en savoir plus, consultez la section Gérer les déclencheurs.

  1. Cliquez sur Créer.

gcloud

Vous pouvez créer un déclencheur en exécutant une commande gcloud eventarc triggers create, associée aux options obligatoires et facultatives.

gcloud eventarc triggers create TRIGGER \
  --location=global \
  --destination-workflow=DESTINATION_WORKFLOW  \
  --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
  --event-filters="type=EVENT_FILTER_TYPE" \
  --event-filters="COLLECTION_ID=RESOURCE_ID" \
  --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
  --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
  --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Replace the following:

  • TRIGGER: the ID of the trigger or a fully qualified identifier.
  • DESTINATION_WORKFLOW: the ID of the deployed workflow that receives the events from the trigger. The workflow can be in any of the Workflows supported locations and does not need to be in the same location as the trigger. However, the workflow must be in the same project as the trigger.
  • DESTINATION_WORKFLOW_LOCATION (optional): the location in which the destination workflow is deployed. If not specified, it is assumed that the workflow is in the same location as the trigger.
  • EVENT_FILTER_TYPE: the identifier of the event. An event is generated when an API call for the method succeeds. For long-running operations, the event is only generated at the end of the operation, and only if the action is performed successfully. For a list of supported event types, see Event types supported by Eventarc.
  • COLLECTION_ID (optional): the resource component that can act as an event filter, and is one of the following:
    • certificate
    • certificateissuanceconfig
    • certificatemap
    • certificatemapentry
    • dnsauthorization
  • RESOURCE_ID: the identifier of the resource used as the filtering value for the associated collection. For more information, see Resource ID.
  • PATH_PATTERN: the path pattern to apply when filtering for the resource
  • EVENT_DATA_CONTENT_TYPE: (optional) the encoding of the event payload. This can be application/json or application/protobuf. The default encoding is application/json.

    Note that an event payload formatted in JSON is larger than one formatted in Protobuf. This might impact reliability depending on your event destination and its limits on event size. For more information, see Known issues.

  • SERVICE_ACCOUNT_NAME: the name of the IAM service account you created to which you granted specific roles required by Workflows.
  • PROJECT_ID: your Google Cloud project ID

Notes:

  • The --location flag must be global. For more information, see Eventarc locations.
  • The --event-filters="type=EVENT_FILTER_TYPE" flag is required. If no other event filter is set, events for all resources are matched.
  • EVENT_FILTER_TYPE cannot be changed after creation. To change EVENT_FILTER_TYPE, create a new trigger and delete the old one.
  • Each trigger can have multiple event filters, comma delimited in one --event-filters=[ATTRIBUTE=VALUE,...] flag, or you can repeat the flag to add more filters. Only events that match all the filters are sent to the destination. Wildcards and regular expressions are not supported; however, when using the --event-filters-path-pattern flag, you can define a resource path pattern.
  • The --service-account flag is used to specify the Identity and Access Management (IAM) service account email associated with the trigger.

Example:

gcloud eventarc triggers create helloworld-trigger \
  --location=global \
  --destination-workflow=my-workflow \
  --destination-workflow-location=us-central1 \
  --event-filters="type=google.cloud.certificatemanager.certificate.v1.updated" \
  --event-filters-path-pattern="certificate=my-certificate-*" \
  --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

Cette commande crée un déclencheur appelé helloworld-trigger pour l'événement identifié comme google.cloud.certificatemanager.certificate.v1.updated et correspond aux événements pour les ID certificate commençant par my-certificate-.