Planifier une fonction Cloud Run basée sur des événements


Ce tutoriel explique comment déclencher une fonction Cloud Run basée sur des événements à l'aide de Cloud Scheduler et en ciblant un sujet Pub/Sub. Utilisez un basée sur des événements lorsque votre fonction doit être déclenchée directement en réponse à des événements au sein de votre projet Google Cloud, tels que des messages un sujet Pub/Sub ou des modifications apportées à un bucket Cloud Storage.

Notez que vous pouvez également planifier une fonction HTTP en ciblant le point de terminaison HTTP de votre fonction. Utilisez une fonction HTTP lorsque Votre fonction doit disposer d'un point de terminaison d'URL et répondre aux requêtes HTTP, et les webhooks. Pour en savoir plus, consultez Types de fonctions Cloud Run

Il est fréquent de programmer l'exécution d'une fonction Cloud Run cas d'utilisation de Cloud Scheduler. Au cours de ce tutoriel, vous allez :

  1. Créer une fonction Cloud Run simple qui s'abonne à un sujet Pub/Sub.
  2. Créer un job Cloud Scheduler qui publie un message sur le sujet Pub/Sub.
  3. exécuter la tâche Cloud Scheduler ;
  4. Vérifiez que la fonction Cloud Run a été déclenchée par Job Cloud Scheduler.

Coûts

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

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.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.

    Enable the APIs

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. Notez que vous devez attribuer le rôle de demandeur Cloud Run, car dans Cloud Run Functions (2e génération), les autorisations d'appel sont disponibles en gérant le service Cloud Run sous-jacent.

  11. Par défaut, les fonctions Cloud Run utilisent le modèle créé automatiquement default Compute Engine service account (Compte de service Compute Engine par défaut) pour son compte de service d'exécution. Vous pouvez utiliser ce compte de service pour tester ce tutoriel. Toutefois, selon la configuration de vos règles d'administration, compte de service par défaut ne dispose peut-être pas automatiquement du rôle Éditeur votre projet. Si tel est le cas, vous devez accorder au compte de service les rôles suivants:
    1. Rédacteur Artifact Registry (roles/artifactregistry.writer)
    2. Rédacteur de journaux (roles/logging.logWriter)
    3. Lecteur des objets de l'espace de stockage (roles/storage.objectViewer)

Créer une fonction Cloud Run basée sur des événements

Créer une fonction basée sur des événements qui se déclenche directement en réponse à des événements au sein de votre projet Google Cloud, dans ce cas, un message publié sur sujet Pub/Sub.

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

    Accéder aux fonctions Cloud Run

  2. Cliquez sur Créer une fonction.

  3. Dans la section Principes de base, procédez comme suit :

    1. Dans la liste Environnement, sélectionnez 2e génération.
    2. Saisissez un nom pour votre fonction.
    3. Dans la liste Région, sélectionnez une région.
  4. Dans la section Déclencheur, procédez comme suit :

    1. Dans la liste Type de déclencheur, sélectionnez Cloud Pub/Sub.
    2. Dans la liste Sujet Cloud Pub/Sub, sélectionnez un sujet existant ou cliquez sur Créer un sujet pour en créer un. Notez le nom du sujet, car vous en aurez besoin à une étape ultérieure.
    3. Cliquez sur Autres options.

      Le panneau Déclencheur Eventarc s'ouvre.

  5. Dans le panneau Déclencheur Eventarc, procédez comme suit :

    1. Si vous êtes invité à autoriser le service Pub/Sub à créer les jetons d'identité dont il a besoin pour appeler la fonction, cliquez sur Accorder.
    2. Dans la liste Compte de service, sélectionnez le compte de service que vous créés précédemment.
    3. Acceptez les autres valeurs par défaut.
    4. Cliquez sur Enregistrer le déclencheur.

      Le panneau Déclencheur Eventarc se ferme.

  6. Acceptez les autres valeurs par défaut et cliquez sur Next (Suivant).

  7. Ne modifiez pas la langue d'exécution par défaut ni l'exemple de code. Le code fait n'utilise aucun service cloud et n'a pas besoin d'autorisations supplémentaires. Cliquez sur Déployer.

Créer une tâche Cloud Scheduler

Créer un job Cloud Scheduler avec une cible Pub/Sub

  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. Saisissez un nom pour votre job.

  4. Dans la liste Région, sélectionnez une région.

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

    30 16 * * 7
    

    Pour en savoir plus, consultez Format et fuseau horaire de la tâche Cron.

  6. Dans la liste Fuseau horaire, sélectionnez un fuseau horaire.

  7. Cliquez sur Continuer.

  8. Dans la liste Type de cible, sélectionnez Pub/Sub.

  9. Sélectionnez le sujet Pub/Sub que vous avez créé précédemment.

  10. Dans le champ Corps du message, saisissez une chaîne à envoyer à votre sujet cible Pub/Sub. Par exemple : "Hello world!"

  11. Cliquez sur Créer.

Vous avez créé une tâche Cron qui envoie un message à votre sujet Pub/Sub à 16h30 les dimanches. Votre fonction Cloud Run est abonnée à ce sujet.

Exécuter votre job Cloud Scheduler

Vous pouvez maintenant exécuter la tâche que vous avez créée.

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

    Accéder à Cloud Scheduler

  2. Cochez la case correspondant à la tâche que vous avez créée, puis cliquez sur Forcer l'exécution.

    Lors de son appel initial, la première tâche créée dans un projet peut prendre quelques minutes à configurer et à exécuter.

  3. Une fois la tâche exécutée, l'état État de la dernière exécution doit indiquer Success.

Vérifier les résultats dans les fonctions Cloud Run

Vous pouvez vérifier que votre fonction Cloud Run est correctement déclenchée et exécutée par votre tâche cron.

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

    Accéder aux fonctions Cloud Run

  2. Cliquez sur le nom de la fonction.

    La page Function details (Informations sur la fonction) s'ouvre et le graphique Invocations/Second (Appels/seconde) s'affiche. affiche votre premier appel de la fonction.

  3. Cliquez sur l'onglet Journaux.

    Vous devriez voir une entrée de journal semblable à Hello, YOUR_STRING!.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Supprimer les ressources du tutoriel

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

    Accéder à Cloud Scheduler

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

  3. Cliquez sur  Supprimer, puis confirmez la suppression.

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

    Accéder à Pub/Sub

  5. Cochez la case située à côté de votre sujet.

  6. Cliquez sur  Supprimer, puis confirmez la suppression.

  7. Dans la console Google Cloud, accédez à la page Fonctions Cloud Run.

    Accéder aux fonctions Cloud Run

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

  9. Cliquez sur Supprimer, puis confirmez votre de suppression.

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

    Accéder à la page "Comptes de service"

  11. Cochez la case à côté du compte de service que vous avez créé.

  12. Cliquez sur Supprimer, puis confirmez votre de suppression.

Étape suivante