Ce tutoriel explique comment utiliser Cloud Tasks dans une application App Engine pour déclencher une fonction Cloud Run et envoyer un e-mail planifié.
Objectifs
- Comprendre le code de chacun des composants
- Créer un compte SendGrid
- Téléchargez le code source.
- Déployez une fonction Cloud Run pour recevoir des requêtes Cloud Tasks et envoyer un e-mail via l'API SendGrid.
- Créez une file d'attente Cloud Tasks.
- Créez un compte de service pour authentifier vos requêtes Cloud Tasks.
- Déployez le code client permettant à un utilisateur d'envoyer un e-mail.
Coûts
Cloud Tasks, les fonctions Cloud Run et App Engine disposent d'une version gratuite. Par conséquent, si vous exécutez le tutoriel dans cette version gratuite des produits concernés, cela ne devrait pas entraîner de coûts supplémentaires. Pour en savoir plus, reportez-vous à la page Tarifs.
Avant de commencer
Sélectionnez ou créez un projet Google Cloud.
Initialisez une application App Engine dans votre projet :
Sur la page Bienvenue dans App Engine, cliquez sur Créer une application.
Sélectionnez une région pour votre application. Cet emplacement servira de paramètre
LOCATION_ID
pour vos requêtes Cloud Tasks. Notez-le donc. Notez que deux sites appelés europe-west et us-central dans les commandes App Engine sont appelés respectivement europe-west1 et us-central1 dans les commandes Cloud Tasks.Sélectionnez Node.js pour le langage et Standard pour l'environnement.
Si la fenêtre pop-up Activer la facturation s'affiche, sélectionnez votre compte de facturation. Si vous ne possédez pas de compte de facturation, cliquez sur Créer un compte de facturation et suivez les instructions de l'assistant.
Sur la page Premiers pas, cliquez sur Suivant. Vous vous en occuperez plus tard.
Activer les fonctions Cloud Run et les API Cloud Tasks
Installez et initialisez gcloud CLI.
Comprendre le code
Cette section décrit le code de l'application et son fonctionnement.
Créer la tâche
La page d'index est diffusée à l'aide de gestionnaires dans app.yaml
. Les variables nécessaires à la création de tâches sont transmises en tant que variables d'environnement.
Ce code crée le point de terminaison /send-email
. Ce point de terminaison gère les envois de formulaires depuis la page d'index et transmet ces données au code de création de tâche.
Ce code crée la tâche et l'envoie à la file d'attente Cloud Tasks. Le code crée la tâche en effectuant ce qui suit :
Spécifier le type de cible comme
HTTP Request
.Spécifier la méthode
HTTP method
à utiliser et la valeurURL
de la cible.Définir l'en-tête
Content-Type
surapplication/json
pour que les applications en aval puissent analyser la charge utile structurée.Ajout d'une adresse e-mail de compte de service afin que Cloud Tasks puisse fournir des identifiants à la cible de la requête, ce qui nécessite une authentification. Le compte de service est créé séparément.
Vérifier que la date saisie par l'utilisateur est comprise dans la limite de 30 jours et l'ajouter à la requête en tant que champ
scheduleTime
.
Création de l'e-mail
Ce code crée la fonction Cloud Run qui est la cible de la requête Cloud Tasks. Il utilise le corps de la requête pour créer un e-mail et l'envoyer via l'API SendGrid.
Préparer l'application
Configurer SendGrid
Créer un compte SendGrid
- Vous pouvez le faire manuellement via le site Web SendGrid.
- Vous pouvez également utiliser Google Cloud Launcher, qui vous permet de créer un compte et d'intégrer la facturation. Consultez la section Créer un compte SendGrid en utilisant Cloud Launcher.
Créez une clé API SendGrid :
Connectez-vous à votre compte SendGrid.
Dans le panneau de navigation de gauche, ouvrez Paramètres et cliquez sur Clés API.
Cliquez sur Créer une clé API, puis sélectionnez l'accès restreint. Sous l'en-tête Mail Send (Envoi de courrier), sélectionnez Full Access (Accès complet).
Copiez la clé API lorsqu'elle est affichée (vous ne la verrez qu'une seule fois, assurez-vous de la coller quelque part pour pouvoir l'utiliser ultérieurement).
Télécharger le code source
Clonez le dépôt de l'exemple d'application sur votre machine locale :
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Accédez au répertoire qui contient l'exemple de code :
cd cloud-tasks/
Déployer la fonction Cloud Run
Accédez au répertoire
function/
:cd function/
Déployez la fonction :
gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \
Remplacez
SENDGRID_API_KEY
par votre clé API.Cette commande utilise des options :
--trigger-http
pour spécifier le type de déclencheur des fonctions Cloud Run.--no-allow-unauthenticated
pour spécifier que l'appel de fonction nécessite une authentification.--set-env-var
pour définir vos identifiants SendGrid
Définissez le contrôle d'accès de la fonction pour autoriser uniquement les utilisateurs authentifiés.
Sélectionnez la fonction
sendEmail
dans l'interface utilisateur des fonctions Cloud Run.Si vous ne voyez pas les informations d'autorisation pour
sendEmail
, cliquez sur AFFICHER LE PANNEAU D'INFORMATIONS dans l'angle supérieur droit.Cliquez sur le bouton Ajouter des comptes principaux.
Définissez le champ Nouveaux comptes principaux sur
allAuthenticatedUsers
.Définissez le rôle.
- Fonctions de 1re génération : définissez le rôle sur
Cloud Function Invoker
. - Fonctions de deuxième génération (2nd gen):définissez le rôle sur
Cloud Run Invoker
- Fonctions de 1re génération : définissez le rôle sur
Cliquez sur ENREGISTRER.
Créer une file d'attente Cloud Tasks
Créez une file d'attente à l'aide de la commande
gcloud
suivante :gcloud tasks queues create my-queue --location=LOCATION
Remplacez
LOCATION
par l'emplacement de votre choix pour la file d'attente, par exempleus-west2
. Si vous ne spécifiez pas l'emplacement, la gcloud CLI choisit l'emplacement par défaut.Vérifiez qu'elle a bien été créée :
gcloud tasks queues describe my-queue --location=LOCATION
Remplacez
LOCATION
par l'emplacement de la file d'attente.
Créer un compte de service
La requête Cloud Tasks doit fournir des identifiants dans l'en-tête Authorization
pour que la fonction Cloud Run puisse authentifier la requête. Ce compte de service permet à Cloud Tasks de créer et d'ajouter un jeton OIDC à cette fin.
Dans l'interface utilisateur des comptes de service, cliquez sur + CRÉER UN COMPTE DE SERVICE.
Ajoutez un nom de compte de service (nom à afficher convivial) et sélectionnez créer.
Définissez le rôle, puis cliquez sur Continuer.
- Fonctions de première génération (1re génération):définissez le rôle sur
Cloud Function Invoker
. - Fonctions de deuxième génération (2nd gen):définissez le rôle sur
Cloud Run Invoker
- Fonctions de première génération (1re génération):définissez le rôle sur
Sélectionnez OK.
Déployer le point de terminaison et le créateur de tâches dans App Engine
Accédez au répertoire
app/
:cd ../app/
Mettez à jour les variables dans
app.yaml
avec vos valeurs :Pour trouver l'emplacement de la file d'attente, utilisez la commande suivante :
gcloud tasks queues describe my-queue --location=LOCATION
Remplacez
LOCATION
par l'emplacement de la file d'attente.Pour trouver l'URL de votre fonction, utilisez la commande suivante :
gcloud functions describe sendEmail
Déployez l'application dans l'environnement standard App Engine à l'aide de la commande suivante :
gcloud app deploy
Ouvrez l'application pour envoyer un courrier de validation par e-mail :
gcloud app browse
Effectuer un nettoyage
Une fois le tutoriel terminé, vous pouvez procéder au nettoyage des ressources que vous avez créées afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.
Supprimer des ressources
Vous pouvez nettoyer les ressources que vous avez créées sur Google Cloud afin qu'elles ne soient plus comptabilisées dans votre quota et qu'elles ne vous soient plus facturées. Dans les sections suivantes, nous allons voir comment supprimer ou désactiver ces ressources.
Supprimer la fonction Cloud Run
Accédez à la page Fonctions Cloud Run dans la console Google Cloud.
Cochez les cases situées en regard de vos fonctions.
Cliquez sur le bouton Supprimer en haut de la page et confirmez la suppression.
Supprimer la file d'attente Cloud Tasks
Ouvrez la page des files d'attente Cloud Tasks dans la console.
Sélectionnez le nom de la file d'attente que vous souhaitez supprimer, puis cliquez sur Supprimer la file d'attente.
Confirmez l'opération.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Étape suivante
- En savoir plus sur la création de tâches cibles HTTP.
- Découvrez comment configurer votre file d'attente Cloud Tasks.