Planifier une fonction Cloud à l'aide de Pub/Sub

Ce tutoriel montre comment utiliser Cloud Scheduler et Pub/Sub pour déclencher une fonction Cloud. Il est courant d'utiliser Cloud Scheduler afin de planifier l'exécution d'une fonction Cloud Functions. Vous découvrirez comment :

  • créer une fonction Cloud simple qui s'abonne à un sujet Pub/Sub ;
  • créer un sujet Pub/Sub pour déclencher cette fonction ;
  • Créer une tâche Cloud Scheduler qui appelle le déclencheur Pub/Sub
  • exécuter la tâche Cloud Scheduler ;
  • vérifier le bon déroulement de l'opération.

Avant de commencer

Dans ce tutoriel, nous partons du principe que vous avez déjà effectué le Démarrage rapide de Cloud Scheduler. Par conséquent, vous disposez des outils et ressources suivants:

  • Un projet Google Cloud avec facturation activée.

  • L'API Cloud Scheduler et l'API Pub/Sub sont toutes deux activées sur le projet. Vous activerez l'API Cloud Functions au cours de ce tutoriel.

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Créer une fonction Cloud avec un déclencheur

  1. Dans la console Google Cloud, accédez à la page Cloud Functions.

    Accéder à Cloud Functions

  2. Si vous y êtes invité, cliquez sur Activer l'API.

  3. Cliquez sur Créer une fonction. Si un message vous invite à activer les API, cliquez sur Activer pour les activer.

  4. Dans la section Principes de base, sélectionnez l'environnement 2nd gen, saisissez un nom pour votre fonction, puis sélectionnez une région.

  5. Dans la section Déclencheur, sélectionnez Exiger l'authentification. Cliquez sur Ajouter un déclencheur, puis sélectionnez Déclencheur Pub/Sub. Le panneau Déclencheur Eventarc s'ouvre. Si vous êtes invité à activer les API requises, cliquez sur Activer.

  6. Dans le panneau Déclencheur Eventarc, assurez-vous que les premiers champs sont remplis comme suit ou remplissez-les si nécessaire:

    • Type de déclencheur:sources Google
    • Fournisseur d'événements:Cloud Pub/Sub
    • Événement:google.cloud.pubsub.topic.v1.messagePublished
  7. Dans le champ Sélectionner un sujet Cloud Pub/Sub, sélectionnez un sujet existant ou cliquez sur Créer un sujet pour en créer un. Votre fonction s'abonne à ce sujet. Notez le nom du sujet. Vous en aurez besoin par la suite.

    • Si vous y êtes invité, cliquez sur Grant (Attribuer) pour permettre au service Pub/Sub de créer les jetons d'identité dont il aura besoin pour déclencher la fonction. Rappelez-vous que vous avez sélectionné Exiger l'authentification pour la fonction précédemment. Pub/Sub utilise les jetons d'identité pour cette authentification requise.
  8. Dans le champ Compte de service, cliquez sur Créer un compte de service.

    1. Attribuez un nom au compte de service, puis cliquez sur Créer. Eventarc utilise ce compte de service pour appeler la fonction avec un jeton d'identité à partir du service Pub/Sub.

    2. Dans la section Autoriser ce compte de service à accéder au projet, sélectionnez le rôle Demandeur Cloud Run. Cela permet au compte de service d'appeler votre fonction de 2e génération.

    3. Cliquez sur OK.

  9. Laissez l'option Réessayer après échec désélectionnée. Cliquez sur Enregistrer le déclencheur.

  10. Développez la section Paramètres d'exécution, de compilation, de connexion et de sécurité, puis sélectionnez l'onglet Environnement d'exécution.

  11. Sous Compte de service d'exécution, cliquez sur Créer dans le champ Compte de service. Le processus de création d'un compte de service s'ouvre dans un nouvel onglet. Ce compte de service est l'identité dont dispose la fonction Cloud lorsqu'elle s'exécute.

    1. Attribuez un nom au compte de service.
    2. Cliquez sur Créer et continuer.
    3. Cliquez sur OK.

    Vous êtes redirigé vers la page Comptes de service de la console Google Cloud. Vous pouvez fermer cet onglet.

  12. Revenez au champ Compte de service sur la page de création de la fonction, cliquez sur Actualiser, puis sélectionnez le compte de service que vous venez de créer.

  13. Cliquez sur Suivant. Si vous êtes invité à activer les API requises, cliquez sur Enable (Activer).

  14. Ne modifiez pas le langage par défaut ni l'exemple de code. Le code n'utilise aucun service cloud et ne nécessite aucune autorisation supplémentaire. Cliquez sur Déployer.

Créer une tâche Cloud Scheduler

  1. Dans la console Google Cloud, accédez à la page Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Cliquez sur Créer une tâche.

  3. Si nécessaire, sélectionnez une région dans laquelle exécuter votre job.

  4. Attribuez un nom à votre tâche. Vous pouvez éventuellement ajouter une description.

  5. Dans le champ Frequency (Fréquence), spécifiez la fréquence de votre tâche en utilisant le format unix-cron.

    30 16 * * 7
    

    Pour en savoir plus, consultez la section Configurer les job Cron Cron.

  6. Sélectionnez votre fuseau horaire.

  7. Cliquez sur Continuer.

  8. Dans la section Configurer l'exécution, sélectionnez Pub/Sub comme type de cible.

  9. Sélectionnez le nom de votre sujet.

  10. Ajoutez une courte chaîne Message à envoyer à votre cible.

  11. Cliquez sur Créer.

Vous disposez maintenant d'une job Cron qui envoie un message à votre sujet Pub/Sub à 16h30 tous les dimanches. Votre fonction Cloud Functions est abonnée à ce sujet.

Exécuter votre tâche

Vous pouvez maintenant exécuter le job que vous avez créé.

  1. Dans Google Cloud Console, accédez à la page Cloud Scheduler.

    Accéder à Cloud Scheduler

  2. Sélectionnez le job que vous avez créé.

  3. Cliquez sur Forcer l'exécution.

    La première exécution de la première tâche créée dans un projet peut prendre quelques minutes, étant donné que des opérations de configuration sont requises.

  4. Notez la colonne État de la dernière exécution. Une fois la tâche exécutée, cette colonne doit indiquer "Opération réussie".

Félicitations ! Vous venez d'utiliser la console pour afficher les résultats de l'exécution d'une tâche Cron qui envoie un message à Pub/Sub. Dans la prochaine étape, vous allez découvrir comment vérifier que votre fonction Cloud Functions a bien été exécutée.

Vérifier les résultats dans Cloud Functions

Pour vérifier que votre fonction Cloud est correctement déclenchée par votre job Cron:

  1. Dans la console Google Cloud, accédez à la page Cloud Functions.

    Accéder à Cloud Functions

  2. Cliquez sur le nom de la fonction.

  3. La page Informations sur la fonction s'ouvre. Le graphique Invocations/Seconds (Appels/secondes) doit afficher votre premier appel de la fonction. Pour afficher les détails de l'appel, cliquez sur Journaux.

Félicitations ! Votre fonction a été exécutée.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud, procédez comme suit:

Supprimer la tâche Cloud Scheduler

  1. Dans la console Google Cloud, accédez à la page Cloud Scheduler.

    Accéder au programmeur

  2. Cochez la case située en regard de votre tâche.

  3. Cliquez sur Supprimer, puis confirmez la suppression.

Supprimer le sujet Pub/Sub

  1. Dans la console Google Cloud, accédez à la page Cloud Pub/Sub.

    Accéder à Pub/Sub

  2. Cochez la case à côté de votre thème.

  3. Cliquez sur Supprimer, puis confirmez la suppression.

Supprimer la fonction Cloud Functions

  1. Dans la console Google Cloud, accédez à la page Cloud Functions.

    Accéder à Cloud Functions

  2. Cochez la case située à côté de votre fonction.

  3. Cliquez sur Supprimer, puis confirmez la suppression.

Supprimer les comptes de service

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

    Accéder à la page "Comptes de service"

  2. Cochez les cases correspondant aux comptes de service que vous avez créés.

  3. Cliquez sur Supprimer, puis confirmez la suppression.

Désactiver les API

Si vous avez activé des API au cours de ce tutoriel (telles que les API Eventarc, Cloud Functions ou Pub/Sub), désactivez-les. La désactivation d'API affecte l'accès à l'API pour le projet. Par conséquent, ne désactivez pas les API si d'autres ressources de votre projet les utilisent.

  1. Dans la console Google Cloud, accédez à la page API et services.

    Accéder aux API et services

  2. Cliquez sur l'API que vous souhaitez désactiver. Une page décrivant l'API s'affiche.

  3. Cliquez sur Désactiver l'API.

Supprimer le projet

Si vous avez créé un projet seulement pour ce tutoriel :

  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.