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 en utilisant Google Cloud Console ou l'outil de ligne de commande gcloud.

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. Lorsque vous utilisez l'outil gcloud :
    1. Mettez à jour les composants gcloud :
      gcloud components update
    2. Connectez-vous à votre compte :

      gcloud auth login
      

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

    4. Activez les journaux d'audit Cloud de type Lecture administrateur, Lecture de données et Ecriture de données dans Cloud Storage :

      Accéder à la console Cloud Audit Logging

    5. Attribuez le rôle iam.serviceAccountTokenCreator au compte de service Pub/Sub :

      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:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com"\
          --role='roles/iam.serviceAccountTokenCreator'
      

    6. Attribuez le rôle eventarc.eventReceiver au compte de service Compute Engine :

      gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
          --member=serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com \
          --role='roles/eventarc.eventReceiver'
      

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

Console

  1. Accédez à Cloud Storage dans Cloud Console.

    Accéder à Cloud Storage

  2. Cliquez sur Créer un bucket.

    Nouveau bucket.

  3. Saisissez les informations relatives à votre bucket et cliquez sur Continuer à chaque étape :

    • Saisissez un nom unique. Exemple :eventarcbucket
    • Sélectionnez Région comme Type d'emplacement.
    • Sélectionnez us-central1 (Iowa) comme Emplacement.
    • Sélectionnez Standard comme classe de stockage par défaut.
    • Sélectionnez Uniforme comme type de Contrôle des accès.
  4. Cliquez sur Create (Créer).

Ligne de commande

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 :

Console

  1. Clonez l'exemple de dépôt dans votre compte GitHub :

    Go

    1. Sur GitHub, accédez à GoogleCloudPlatform/golang-samples.

    2. Cliquez sur Fork (Dupliquer).

      Capture d'écran du bouton de division

    3. Si vous y êtes invité, sélectionnez l'emplacement où vous souhaitez dupliquer le dépôt.

    Java

    1. Sur GitHub, accédez à GoogleCloudPlatform/java-docs-samples.

    2. Cliquez sur Fork (Dupliquer).

      Capture d'écran du bouton de division

    3. Si vous y êtes invité, sélectionnez l'emplacement où vous souhaitez dupliquer le dépôt.

    .NET

    1. Sur GitHub, accédez à GoogleCloudPlatform/dotnet-docs-samples.

    2. Cliquez sur Fork (Dupliquer).

      Capture d'écran du bouton de division

    3. Si vous y êtes invité, sélectionnez l'emplacement où vous souhaitez dupliquer le dépôt.

    Node.js

    1. Sur GitHub, accédez à GoogleCloudPlatform/nodejs-docs-samples.

    2. Cliquez sur Fork (Dupliquer).

      Capture d'écran du bouton de division

    3. Si vous y êtes invité, sélectionnez l'emplacement où vous souhaitez dupliquer le dépôt.

    Python

    1. Sur GitHub, accédez à GoogleCloudPlatform/python-docs-samples.

    2. Cliquez sur Fork (Dupliquer).

      Capture d'écran du bouton de division

    3. Si vous y êtes invité, sélectionnez l'emplacement où vous souhaitez dupliquer le dépôt.

  2. Accédez à Cloud Run dans Cloud Console.

    Accédez à Cloud Run

  3. Cliquez sur Créer un service pour afficher le formulaire de création de service.

    create-service-page

  4. Sélectionnez Cloud Run (entièrement géré).

  5. Sélectionnez us-central1(Iowa) comme région dans laquelle vous souhaitez placer votre service.

  6. Saisissez le nom de service souhaité. Par exemple, helloworld-events.

  7. Cliquez sur Next (Suivant).

  8. Sélectionnez Continuously deploy new revisions from a source repository (Déployer de nouvelles révisions en continu à partir d'un dépôt source).

  9. Cliquez sur Configurer avec Cloud Build pour ouvrir le formulaire Configurer avec Cloud Build.

    Configurer avec la page Cloud Build

    Dans le formulaire Configurer avec Cloud Build :

    1. Si vous y êtes invité, activez l'API Cloud Build et l'API Container Analysis.
    2. Sélectionnez GitHub comme fournisseur de dépôt.

    3. Si vous y êtes invité, cliquez sur Installer Google Cloud Build.

    4. Sélectionnez le dépôt GitHub que vous avez dupliqué en guise de Dépôt.

    5. Cliquez sur Next (Suivant).

    6. Dans le champ Branche, saisissez ^master$.

    7. Sélectionnez Dockerfile dans le champ Type de compilation, puis indiquez l'emplacement source du Dockerfile :

      eventarc/audit-storage/Dockerfile ou eventarc/audit_storage/Dockerfile (Go)

    8. Cliquez sur Enregistrer.

  10. Dans le formulaire Créer un service, cliquez sur Suivant.

  11. Dans la section Configurer le déclenchement de ce service :

    • Sélectionnez Autoriser tout le trafic.

    • Sélectionnez Autoriser les appels non authentifiés.

  12. Vous pouvez également cliquer sur Ajouter un déclencheur et créer un déclencheur ou en créer un après avoir créé un service. Pour en savoir plus sur la création d'un déclencheur, consultez la section Créer un déclencheur Eventarc.

  13. Cliquez sur Create (Créer).

Ligne de commande

  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é).

Console

  1. Accédez à Cloud Run dans Cloud Console.

    Accédez à Cloud Run

  2. Dans la liste des services, cliquez sur celui que vous avez créé pour accéder à la page Informations sur le service.

  3. Cliquez sur l'onglet Déclencheurs, puis sur Ajouter un déclencheur.

  4. Dans la liste déroulante Choisir un événement, sélectionnez Cloud Storage > storage.objects.create.

  5. Dans le champ Recevoir des événements de, sélectionnez Région unique.

  6. Activez Cloud Audit Logging pour le service storage.googleapis.com.

  7. Si vous y êtes invité, attribuez le rôle eventarc.eventReceiver au compte de service Compute Engine et le rôle iam.serviceAccountTokenCreator au compte de service Pub/Sub.

    Configurer un nouveau déclencheur

  8. Cliquez sur Enregistrer.

Ligne de commande

  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 :

    Console

    1. Créez un fichier texte portant le nom random.txt et le texte "Hello World".

    2. Accédez à Cloud Storage dans Cloud Console.

      Accéder à Cloud Storage

    3. Sélectionnez le bucket de stockage que vous avez créé.

    4. Dans l'onglet Objets, cliquez sur Importer des fichiers, puis importez le fichier random.txt.

    Ligne de commande

    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 :

    Console

    1. Accédez à Cloud Run dans Cloud Console.

      Accédez à Cloud Run

    2. Dans la liste des services, cliquez sur le nom du service que vous avez créé pour accéder à la page Informations sur le service.

    3. Cliquez sur l'onglet Journaux pour accéder aux journaux de requêtes et de conteneurs pour toutes les révisions de ce service. Vous pouvez filtrer les journaux par niveau de gravité.

    4. Recherchez une entrée de journal semblable à ceci :

      Journaux de déclencheurs

    Ligne de commande

    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.

  1. Dans Cloud Console, 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