Agrega una tarea de App Engine a una cola de Cloud Tasks

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

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.

  3. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

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

    gcloud init
  5. Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos (roles/resourcemanager.projectCreator), que contiene el resourcemanager.projects.create permiso. Obtén información para otorgar roles.
    • Crea un proyecto de: Google Cloud

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el Google Cloud proyecto de que estás creando.

    • Selecciona el Google Cloud proyecto de que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu Google Cloud proyecto de.

  6. Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  7. Habilita la API de Cloud Resource Manager y Cloud Tasks:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el serviceusage.services.enable permiso. Obtén información para otorgar roles.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:

    gcloud auth application-default login

    No es necesario que lo hagas si usas Cloud Shell.

    Si se muestra un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.

  9. Instala Google Cloud CLI.

  10. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

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

    gcloud init
  12. Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crea un proyecto: Para crear un proyecto, necesitas el rol de creador de proyectos (roles/resourcemanager.projectCreator), que contiene el resourcemanager.projects.create permiso. Obtén información para otorgar roles.
    • Crea un proyecto de: Google Cloud

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el Google Cloud proyecto de que estás creando.

    • Selecciona el Google Cloud proyecto de que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu Google Cloud proyecto de.

  13. Verifica que la facturación esté habilitada para tu Google Cloud proyecto.

  14. Habilita la API de Cloud Resource Manager y Cloud Tasks:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el serviceusage.services.enable permiso. Obtén información para otorgar roles.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. Si usas un shell local, crea credenciales de autenticación locales para tu cuenta de usuario:

    gcloud auth application-default login

    No es necesario que lo hagas si usas Cloud Shell.

    Si se muestra un error de autenticación y usas un proveedor de identidad (IdP) externo, confirma que accediste a la gcloud CLI con tu identidad federada.

  16. La cuenta de servicio predeterminada de App Engine se crea automáticamente cuando usas App Engine. Puedes usar esta cuenta de servicio cuando pruebes esta guía de inicio rápido. Sin embargo, según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada no se le otorgue automáticamente el rol de Editor en tu proyecto. Si ese es el caso, debes otorgar 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. Escritor de registros (roles/logging.logWriter)
    5. Visualizador de objetos de Storage (roles/storage.objectViewer)

Agrega una aplicación de App Engine

Cuando segmentas una tarea de App Engine y antes de que puedas implementar una app en el entorno estándar de App Engine, debes agregar 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 diálogo Te damos la bienvenida a App Engine, haz una de las siguientes acciones:

    • Si ya creaste una aplicación de App Engine y se muestra el mensaje Se creó tu aplicación de App Engine, puedes omitir los pasos restantes de esta sección y continuar con los pasos de la sección Instala y, luego, implementa la muestra.

      o

    • Si aún no creaste una aplicación de App Engine, haz clic en Crear aplicación y continúa con los pasos restantes de 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 una cuenta de servicio; se usa la cuenta de servicio predeterminada de App Engine.

  5. Haz clic en Siguiente.

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

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

    Deberías ver el mensaje Se creó tu aplicación de App Engine.

Instala y, luego, implementa la muestra

La muestra 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 agregar tareas a la cola de Tasks; server.js se implementa 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. Navega al directorio que contiene el código de muestra.

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

    Puedes usar NPM:

    npm install
    

    O bien, puedes usar Yarn:

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

    gcloud app deploy app.yaml
    
  5. Asegúrate de que la app que contiene el servicio se esté ejecutando.

    gcloud app browse
    
  6. En tu navegador, ve al vínculo proporcionado. Por ejemplo:

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

    Deberías ver Hello, World!.

Crea una cola de Cloud Tasks

Usa el gcloud tasks queues create comando para crear tu cola en el entorno que preparaste.

  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
    

    Reemplaza lo siguiente:

    • QUEUE_NAME: un nombre para tu cola de Cloud Tasks
    • REGION: la región en la que implementaste tu app
  2. Espera a que se inicialice la cola y, luego, verifica que se haya creado correctamente.

    gcloud tasks queues describe QUEUE_NAME \
        --location=REGION
    

    El resultado debería ser similar al siguiente ejemplo:

     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
    

Agrega una tarea a la cola de Cloud Tasks

Crea una tarea, agrégala a la cola que creaste y entrégala al servicio de trabajador.

  1. Configura 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 la carga útil hello y agrégala a tu cola. La carga útil puede ser cualquier conjunto de datos de la solicitud que el servicio de trabajador necesite para procesar la tarea.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. Muestra los registros del servicio de trabajador para verificar que la tarea se haya ejecutado.

    gcloud app logs read
    

    Los registros deberían verse de la siguiente manera:

    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
    

Limpia

Para evitar que se apliquen cargos a tu Google Cloud cuenta de por los recursos que usaste en esta página, borra el Google Cloud proyecto de que tiene los recursos.

Borra un Google Cloud proyecto de:

gcloud projects delete PROJECT_ID

Como alternativa, puedes borrar los recursos que creaste:

  1. Borra la cola de Cloud Tasks:

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

¿Qué sigue?