Guide de démarrage rapide : Recevoir des événements Cloud Storage

Ce guide de démarrage rapide explique comment recevoir des événements à partir de Cloud Storage dans un service Cloud Run (entièrement géré) sans authentification à l'aide d'Eventarc.

Vous pouvez suivre ce guide de démarrage rapide à l'aide de l'outil de ligne de commande gcloud. Pour obtenir des instructions sur l'utilisation de la console, consultez la page Utiliser la console pour recevoir des événements avec Cloud Audit Logging.

Dans le cadre de ce guide démarrage rapide, vous allez effectuer les étapes suivantes :

  1. Créer un bucket Cloud Storage qui servira de source d'événements.

  2. Déployer un service récepteur d'événements sur Cloud Run (entièrement géré).

  3. Créer un déclencheur d'événement.

  4. Générer un événement en important un fichier dans le bucket Cloud Storage et l'afficher dans les journaux Cloud Run (entièrement gérés).

Avant de commencer

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

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

  4. Activer les API Cloud Run, Cloud Logging, Cloud Build, Pub/Sub, Eventarc.

    Activer les API

  5. Mettez à jour les composants gcloud :
    gcloud components update
  6. Connectez-vous à votre compte :

    gcloud auth login
    

  7. Définissez les variables de configuration utilisées dans ce guide de démarrage rapide :

    gcloud config set project PROJECT_ID
    gcloud config set run/region us-central1
    gcloud config set run/platform managed
    gcloud config set eventarc/location us-central1
    

  8. Activez les journaux d'audit Cloud de type Lecture administrateur, Lecture de données et Ecriture de données dans Cloud Storage :
    1. Consultez la stratégie IAM de votre projet et stockez-la dans un fichier :
       gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
      
    2. Modifiez votre stratégie dans /tmp/policy.yaml. Vous ne pouvez ajouter ou modifier que la configuration des journaux d'audit pour l'accès aux données.

      auditConfigs:
      - auditLogConfigs:
        - logType: ADMIN_READ
        - logType: DATA_WRITE
        - logType: DATA_READ
        service: storage.googleapis.com
      bindings:
      - members:
        - user:EMAIL_ADDRESS
        role: roles/owner
      etag: BwW_bHKTV5U=
      version: 1
      
      • Remplacez EMAIL_ADDRESS par votre adresse e-mail.
    3. Rédigez votre nouvelle stratégie IAM :
      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
      
      Si la commande précédente signale un conflit avec une autre modification, répétez ces étapes en commençant par l'étape a.
  9. Attribuez le rôle eventarc.eventReceiver au compte de service Compute Engine :
    export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
        --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
        --role='roles/eventarc.eventReceiver'
    

  10. Si vous avez activé le compte de service Pub/Sub le 8 avril 2021 ou avant cette date, attribuez le rôle iam.serviceAccountTokenCreator au compte de service Pub/Sub:

    gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
        --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\
        --role='roles/iam.serviceAccountTokenCreator'
    

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

Créer un bucket Cloud Storage

Ce guide de démarrage rapide utilise Cloud Storage comme source d'événements. Pour créer un bucket de stockage, procédez comme suit :

gsutil mb -l us-central1 gs://events-quickstart-$(gcloud config get-value project)/

Une fois la source d'événements créée, vous pouvez déployer le service récepteur d'événements sur Cloud Run (entièrement géré).

Déployer le service récepteur d'événements sur Cloud Run (entièrement géré)

Déployez un service Cloud Run (entièrement géré) qui reçoit et consigne les événements. Pour déployer l'exemple de service récepteur d'événements, procédez comme suit :

  1. Clonez le dépôt :

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/audit_storage
    

    Java

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/audit-storage
    

    .NET

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/audit-storage
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/audit-storage
    

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/audit-storage
    
  2. Créez le conteneur et importez-le dans Cloud Build :

     gcloud builds submit --tag gcr.io/$(gcloud config get-value project)/helloworld-events
    
  3. Déployez l'image du conteneur sur Cloud Run (entièrement géré) :

     gcloud run deploy helloworld-events \
         --image gcr.io/$(gcloud config get-value project)/helloworld-events \
         --allow-unauthenticated
    

    Une fois le déploiement effectué, la ligne de commande affiche l'URL du service.

    Maintenant que vous avez déployé votre service récepteur d'événements appelé helloworld-events sur Cloud Run (entièrement géré), vous pouvez configurer votre déclencheur.

Créer un déclencheur Eventarc

Le déclencheur Eventarc envoie des événements à partir du bucket Cloud Storage vers le service Cloud Run helloworld-events (entièrement géré).

  1. Créez un déclencheur filtrant les événements Cloud Storage et utilisant le compte de service Compute Engine par défaut du projet Google Cloud :

     gcloud eventarc triggers create events-quickstart-trigger \
         --destination-run-service=helloworld-events \
         --destination-run-region=us-central1 \
         --event-filters="type=google.cloud.audit.log.v1.written" \
         --event-filters="serviceName=storage.googleapis.com" \
         --event-filters="methodName=storage.objects.create" \
         --service-account=${PROJECT_NUMBER}-compute@developer.gserviceaccount.com
    

    Cette action crée un déclencheur appelé events-quickstart-trigger.

  2. Pour vérifier que events-quickstart-trigger a bien été créé, exécutez la commande suivante :

     gcloud eventarc triggers list --location=us-central1
    

    events-quickstart-trigger s'affiche avec une cible helloworld-events.

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

  1. Pour générer un événement, procédez comme suit :

    Transférez un fichier texte vers Cloud Storage :

     echo "Hello World" > random.txt
     gsutil cp random.txt gs://events-quickstart-$(gcloud config get-value project)/random.txt
    

    L'importation génère un événement, et le service Cloud Run (entièrement géré) consigne le message de l'événement.

  2. Pour afficher l'entrée de journal, procédez comme suit :

    1. gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=helloworld-events"
      
    2. Recherchez une entrée de journal semblable à ceci :

      Detected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
      

      BUCKET_NAME est le nom du bucket Cloud Storage.

Félicitations ! Vous venez de déployer un service de récepteur d'événements sur Cloud Run (entièrement géré), de créer un déclencheur Eventarc, et de générer un événement à partir de Cloud Storage pour l'afficher dans les journaux Cloud Run (entièrement géré).

Nettoyer

Bien que Cloud Run ne facture pas un service inutilisé, il se peut que des frais vous soient toujours facturés pour le stockage de l'image de conteneur dans Container Registry, les ressources Eventarc, et le stockage des fichiers dans votre bucket Cloud Storage.

Vous pouvez supprimer votre image et supprimer votre bucket de stockage. Pour supprimer le déclencheur Eventarc, procédez comme suit :

gcloud eventarc triggers delete events-quickstart-trigger

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.

gcloud projects delete PROJECT_ID_OR_NUMBER
  • Remplacez PROJECT_ID_OR_NUMBER par l'ID ou le numéro du projet.

Étape suivante