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 fila de Cloud Tasks con la API de Cloud Tasks.

Antes de comenzar

  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. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. 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.

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

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

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  7. 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.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. 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.

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

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

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  13. 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.

  14. El 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 tu organización, es posible que a la cuenta de servicio predeterminada no se le otorgue automáticamente el rol Editor en tu proyecto. Si ese es el caso, debes otorga a la cuenta de servicio los siguientes roles:
    1. Administrador de Artifact Registry (roles/artifactregistry.admin)
    2. Escritor de creación automática al momento del envío de Artifact Registry (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 te orientas a 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 consola de Google Cloud, 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 aparece 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 Crea la aplicación y continúa con los pasos restantes de esta sección.

  3. Selecciona una región para tu aplicación y tomar nota de ella.

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

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

  5. Haz clic en Siguiente.

    Se configura y crea la aplicación. Este proceso puede tardar unos minutos.

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

    Deberías ver el mensaje Your App Engine application has been created.

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 herramienta de línea de comandos para crear y agregar tareas a la cola de Tasks, y server.js se implementa en App Engine como un servicio de trabajador para procesar la tarea.

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

    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 del trabajador (server.js) en el entorno estándar de App Engine.

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

    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 la gcloud tasks queues create. para crear tu cola en el entorno que preparaste.

  1. En la 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: Es un nombre para tus tareas de Cloud Tasks. fila
    • REGION: Es la región en la que implementaste la app.
  2. Espera a que se inicialice la cola y, luego, verifica que se haya creado. con éxito.

    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 a la trabajador de servicio.

  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. El puede ser cualquier dato de la solicitud que el servicio trabajador necesita 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 ser similares 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
    

Limpia

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

Delete a Google Cloud project:

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?