Añadir una tarea de App Engine a una cola de Cloud Tasks

En esta guía de inicio rápido se muestra cómo añadir una tarea de App Engine a una cola de Cloud Tasks mediante la API Cloud Tasks.

Antes de empezar

  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. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  9. Install the Google Cloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Cloud Resource Manager and Cloud Tasks API:

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

  16. La cuenta de servicio predeterminada de App Engine se crea automáticamente cuando usas App Engine. Puedes usar esta cuenta de servicio para probar esta guía de inicio rápido. Sin embargo, en función de la configuración de la política de tu organización, es posible que no se conceda automáticamente el rol Editor a la cuenta de servicio predeterminada en tu proyecto. Si es así, debes conceder a la cuenta de servicio los siguientes roles:
    1. Administrador de Artifact Registry (roles/artifactregistry.admin)
    2. Escritor de Artifact Registry Create-on-Push (roles/artifactregistry.createOnPushWriter)
    3. Administrador de Compute (roles/compute.admin)
    4. Editor de registros (roles/logging.logWriter)
    5. Lector de objetos de Storage (roles/storage.objectViewer)
  17. Añadir una aplicación de App Engine

    Cuando segmentas tareas de App Engine y antes de desplegar una aplicación en el entorno estándar de App Engine, debes añadir una aplicación de App Engine a tu proyecto.

    1. En la Google Cloud consola, ve a la página App Engine.

      Ir a App Engine

    2. En el cuadro de diálogo Bienvenido a App Engine, haga una de las siguientes acciones:

      • Si ya has creado una aplicación de App Engine y se muestra el mensaje Tu aplicación de App Engine se ha creado, puedes saltarte los pasos restantes de esta sección y seguir los de la sección Instalar y desplegar la muestra.

        o

      • Si aún no has creado una aplicación de App Engine, haz clic en Crear aplicación y sigue los pasos que quedan en esta sección.

    3. Selecciona una región para tu aplicación y anótala.

      Ten en cuenta que europe-west y us-central se denominan europe-west1 y us-central1, respectivamente, en los comandos de Cloud Tasks.

    4. No selecciones ninguna cuenta de servicio. Se usará la cuenta de servicio predeterminada de App Engine.

    5. Haz clic en Siguiente.

      La aplicación se configura y se crea. Este proceso puede tardar un par de minutos.

    6. No descargues el SDK de Google Cloud. En su lugar, haz clic en Lo haré más tarde.

      Debería aparecer el mensaje Se ha creado tu aplicación de App Engine.

    Instalar y desplegar el ejemplo

    El ejemplo de Node.js que se usa en esta guía de inicio rápido consta de dos archivos: createTask.js se ejecuta de forma local como una herramienta de línea de comandos para crear y añadir tareas a la cola de tareas; server.js se despliega en App Engine como un servicio de trabajador para procesar la tarea.

    1. En tu terminal, clona el repositorio de la aplicación de muestra en tu máquina local.

      git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
      
    2. Ve al directorio que contiene el código de ejemplo.

      cd nodejs-docs-samples/cloud-tasks/snippets
      
    3. Instala todas las dependencias con un gestor de paquetes de Node.js.

      Puedes usar NPM:

      npm install
      

      También puedes usar Yarn:

      yarn install
      
    4. Despliega el servicio de trabajador (server.js) en el entorno estándar de App Engine.

      gcloud app deploy app.yaml
      
    5. Comprueba que la aplicación que contiene el servicio esté en ejecución.

      gcloud app browse
      
    6. En tu navegador, ve al enlace proporcionado. Por ejemplo:

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

      Debería ver Hello, World!.

    Crear una cola de Cloud Tasks

    Usa el comando gcloud tasks queues create para crear la cola en el entorno que has preparado.

    1. En tu terminal, crea una cola que registre todas las operaciones.

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

      Haz los cambios siguientes:

      • QUEUE_NAME: nombre de la cola de Cloud Tasks
      • REGION: la región en la que has implementado tu aplicación
    2. Espera a que se inicialice la cola y, a continuación, comprueba que se ha creado correctamente.

      gcloud tasks queues describe QUEUE_NAME \
          --location=REGION
      

      La salida debería ser similar a la siguiente:

       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
      

    Añadir una tarea a la cola de Cloud Tasks

    Crea una tarea, añádela a la cola que has creado y envíala al servicio de trabajador.

    1. Define las siguientes variables de entorno. El cliente usa esta información para crear la solicitud.

      export PROJECT_ID=PROJECT_ID
      export LOCATION_ID=REGION
      export QUEUE_ID=QUEUE_NAME
      
    2. Crea una tarea con una carga útil de hello y añádela a tu cola. La carga útil puede ser cualquier dato de la solicitud que el servicio de trabajador necesite para procesar la tarea.

      node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
      
    3. Verifica que la tarea se ha ejecutado mostrando los registros del servicio del trabajador.

      gcloud app logs read
      

      Los registros deberían tener un aspecto similar al siguiente:

      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
      

    Limpieza

    Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.

    Delete a Google Cloud project:

    gcloud projects delete PROJECT_ID

    También puedes eliminar los recursos que hayas creado:

    1. Elimina la cola de Cloud Tasks:

      gcloud tasks queues delete QUEUE_NAME \
          --location=REGION
      
    2. Inhabilita la aplicación de App Engine.

    Siguientes pasos