Ajouter une tâche App Engine à une file d'attente Cloud Tasks

Ce guide de démarrage rapide explique comment ajouter une tâche App Engine à une file d'attente Cloud Tasks à l'aide de l'API Cloud Tasks.

Avant de commencer

  1. Connectez-vous à votre Google Cloud compte. 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 sans frais pour exécuter, tester et déployer des charges de travail.
  2. Installez la Google Cloud CLI.

  3. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  4. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  5. Créez ou sélectionnez un Google Cloud projet.

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous avez besoin du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un Google Cloud projet :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du Google Cloud projet que vous créez.

    • Sélectionnez le Google Cloud projet que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre Google Cloud projet.

  6. Vérifiez que la facturation est activée pour votre Google Cloud projet.

  7. Activez l'API Cloud Resource Manager et Cloud Tasks :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui contient l' serviceusage.services.enable autorisation. Découvrez comment attribuer des rôles.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :

    gcloud auth application-default login

    Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.

    Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.

  9. Installez la Google Cloud CLI.

  10. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  11. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  12. Créez ou sélectionnez un Google Cloud projet.

    Rôles requis pour sélectionner ou créer un projet

    • Sélectionner un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
    • Créer un projet : pour créer un projet, vous avez besoin du rôle Créateur de projet (roles/resourcemanager.projectCreator), qui contient l'autorisation resourcemanager.projects.create. Découvrez comment attribuer des rôles.
    • Créez un Google Cloud projet :

      gcloud projects create PROJECT_ID

      Remplacez PROJECT_ID par le nom du Google Cloud projet que vous créez.

    • Sélectionnez le Google Cloud projet que vous avez créé :

      gcloud config set project PROJECT_ID

      Remplacez PROJECT_ID par le nom de votre Google Cloud projet.

  13. Vérifiez que la facturation est activée pour votre Google Cloud projet.

  14. Activez l'API Cloud Resource Manager et Cloud Tasks :

    Rôles requis pour activer les API

    Pour activer les API, vous avez besoin du rôle IAM Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin), qui contient l' serviceusage.services.enable autorisation. Découvrez comment attribuer des rôles.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. Si vous utilisez un shell local, créez des identifiants d'authentification locaux pour votre compte utilisateur :

    gcloud auth application-default login

    Vous n'avez pas besoin de le faire si vous utilisez Cloud Shell.

    Si une erreur d'authentification est renvoyée et que vous utilisez un fournisseur d'identité (IdP) externe, vérifiez que vous vous êtes connecté à la gcloud CLI avec votre identité fédérée.

  16. Le compte de service App Engine par défaut est créé automatiquement lorsque vous utilisez App Engine. Vous pouvez utiliser ce compte de service lorsque vous essayez ce guide de démarrage rapide. Toutefois, selon la configuration de vos règles d'administration, le compte de service par défaut peut ne pas se voir attribuer automatiquement le rôle Editor sur votre projet. Dans ce cas, vous devez attribuer les rôles suivants au compte de service :
    1. Administrateur Artifact Registry (roles/artifactregistry.admin)
    2. Rédacteur Artifact Registry Create-on-Push (roles/artifactregistry.createOnPushWriter)
    3. Administrateur de Compute (roles/compute.admin)
    4. Rédacteur de journaux (roles/logging.logWriter)
    5. Lecteur des objets de l'espace de stockage (roles/storage.objectViewer)

Ajouter une application App Engine

Lorsque vous ciblez une tâche App Engine et avant de pouvoir déployer une application dans l'environnement standard App Engine, vous devez ajouter une application App Engine à votre projet.

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

    Accéder à App Engine

  2. Dans la boîte de dialogue Bienvenue dans App Engine, effectuez l'une des opérations suivantes :

    • Si vous avez déjà créé une application App Engine et que le message Votre application App Engine a bien été créée s'affiche, vous pouvez ignorer les étapes restantes de cette section et passer aux étapes de la section Installer et déployer l'exemple.

      ou

    • Si vous n'avez pas encore créé d'application App Engine, cliquez sur Créer une application , puis suivez les étapes restantes de cette section.

  3. Sélectionnez une région pour votre application et notez-la.

    Notez que europe-west et us-central sont appelés respectivement europe-west1 et us-central1 dans les commandes Cloud Tasks.

  4. Ne sélectionnez pas de compte de service. Le compte de service App Engine par défaut est utilisé.

  5. Cliquez sur Suivant.

    L'application est configurée et créée. Cette opération peut prendre deux minutes.

  6. Ne téléchargez pas Cloud SDK. Cliquez plutôt sur Je le ferai plus tard.

    Le message Votre application App Engine a bien été créée devrait s'afficher.

Installer et déployer l'exemple

L'exemple Node.js utilisé dans ce guide de démarrage rapide se compose de deux fichiers : createTask.js est exécuté localement en tant qu'outil de ligne de commande pour créer et ajouter des tâches à la file d'attente des tâches, tandis que server.js est déployé sur App Engine en tant que service de nœuds de calcul pour traiter la tâche.

  1. Dans votre terminal, clonez le dépôt de l'exemple d'application sur votre machine locale.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. Accédez au répertoire qui contient l'exemple de code.

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. Installez toutes les dépendances à l'aide d'un gestionnaire de packages Node.js.

    Vous pouvez utiliser NPM :

    npm install
    

    Vous pouvez également utiliser Yarn :

    yarn install
    
  4. Déployez le service de nœuds de calcul (server.js) dans l'environnement standard App Engine.

    gcloud app deploy app.yaml
    
  5. Assurez-vous que l'application contenant le service est en cours d'exécution.

    gcloud app browse
    
  6. Dans votre navigateur, accédez au lien fourni. Exemple :

    https://PROJECT_ID.uc.r.appspot.com/
    

    Hello, World! devrait s'afficher.

Créer une file d'attente Cloud Tasks

Utilisez la gcloud tasks queues create commande pour créer votre file d'attente dans l'environnement que vous avez préparé.

  1. Dans votre terminal, créez une file d'attente qui enregistre toutes les opérations.

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    Remplacez les éléments suivants :

    • QUEUE_NAME: nom de votre file d'attente Cloud Tasks
    • REGION : région dans laquelle vous avez déployé votre application
  2. Attendez que la file d'attente s'initialise, puis vérifiez qu'elle a bien été créée.

    gcloud tasks queues describe QUEUE_NAME \
        --location=REGION
    

    La sortie devrait ressembler à ce qui suit :

     name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME
     rateLimits:
       maxBurstSize: 100
       maxConcurrentDispatches: 1000
       maxDispatchesPerSecond: 500.0
     retryConfig:
       maxAttempts: 100
       maxBackoff: 3600s
       maxDoublings: 16
       minBackoff: 0.100s
     state: RUNNING
    

Ajouter une tâche à la file d'attente Cloud Tasks

Créez une tâche, ajoutez-la à la file d'attente que vous avez créée, puis transmettez-la au service de nœuds de calcul.

  1. Définissez les variables d'environnement suivantes. Le client utilise ces informations pour créer la requête.

    export PROJECT_ID=PROJECT_ID
    export LOCATION_ID=REGION
    export QUEUE_ID=QUEUE_NAME
    
  2. Créez une tâche avec la charge utile hello et ajoutez-la à la file d'attente. La charge utile peut être n'importe quelle donnée de la requête dont le service de nœuds de calcul a besoin pour traiter la tâche.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. Vérifiez que la tâche a bien été exécutée en affichant les journaux du service de nœuds de calcul.

    gcloud app logs read
    

    Les journaux doivent ressembler à ce qui suit :

    2024-06-20 15:00:00 default[20240620t143852]  "POST /log_payload HTTP/1.1" 200
    2024-06-20 15:00:00 default[20240620t143852]  App listening on port 8081
    2024-06-20 15:00:00 default[20240620t143852]  Press Ctrl+C to quit.
    2024-06-20 15:00:00 default[20240620t143852]  Received task with payload: hello
    

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette démonstration soient facturées sur votre Google Cloud compte pour les ressources utilisées sur cette page, supprimez le Google Cloud projet qui les contient.

Supprimez un Google Cloud projet :

gcloud projects delete PROJECT_ID

Vous pouvez également supprimer les ressources que vous avez créées :

  1. Supprimez la file d'attente Cloud Tasks :

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. Désactivez l'application App Engine.

Étape suivante