En este instructivo, se muestra cómo usar Cloud Tasks dentro de una aplicación de App Engine para activar una función de Cloud Run y enviar un correo electrónico programado.
Comprende el código
En esta sección, se explica el código de la app y su funcionamiento.
Crea la tarea
La página de índice se publica con controladores en app.yaml. Las variables necesarias para la creación de tareas se pasan como variables de entorno.
Este código crea el extremo /send-email. Este extremo controla los envíos de formularios desde la página de índice y pasa esos datos al código de creación de tareas.
Este código crea la tarea y la envía a la cola de Cloud Tasks. El código compila la tarea de la siguiente manera:
- Especifica el tipo de objetivo como - HTTP Request.
- Especificar el - HTTP methodque se usará y el- URLdel objetivo
- Establece el encabezado - Content-Typeen- application/jsonpara que las aplicaciones posteriores puedan analizar la carga útil estructurada.
- Agrega un correo electrónico de la cuenta de servicio para que Cloud Tasks pueda proporcionar credenciales al destino de la solicitud, que requiere autenticación. La cuenta de servicio se crea por separado. 
- Verifica que la entrada del usuario para la fecha esté dentro del máximo de 30 días y agrega a la solicitud como campo - scheduleTime.
Crea el correo electrónico
Este código crea la función de Cloud Run que es el destino de la solicitud de Cloud Tasks. Usa el cuerpo de la solicitud para construir un correo electrónico y enviarlo a través de la API de SendGrid.
Prepara la aplicación
Configura SendGrid
- Crear una cuenta de SendGrid - Puedes hacerlo de manera manual a través del sitio web de SendGrid.
- o puedes usar Google Cloud Launcher, que creará una cuenta para ti e integrará la facturación. Consulta Crea una cuenta de SendGrid con Cloud Launcher.
 
- Crea una clave de API de SendGrid: - Accede a tu cuenta de SendGrid. 
- En la barra de navegación izquierda, abre Configuración y haz clic en Claves de API. 
- Haz clic en Crear clave de API y selecciona el acceso restringido. En el encabezado Enviar correo electrónico, selecciona Acceso completo. 
- Copia la clave de API cuando se muestre (solo verás esto una vez, asegúrate de pegarla en algún lugar para poder usarla más adelante). 
 
Descarga el código fuente
- Clona el repositorio de la app de muestra en tu máquina local: - git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
- Dirígete al directorio que contiene el código de muestra: - cd cloud-tasks/
Implementa la Cloud Run Function
- Navega al directorio - function/:- cd function/
- Sigue estos pasos para implementar la función: - gcloud functions deploy sendEmail --runtime nodejs14 --trigger-http \ --no-allow-unauthenticated \ --set-env-vars SENDGRID_API_KEY=SENDGRID_API_KEY \ - Reemplaza - SENDGRID_API_KEYpor tu clave de API.- Este comando usa las siguientes marcas: - --trigger-httppara especificar el tipo de activador de Cloud Run Functions
- --no-allow-unauthenticatedpara especificar que la invocación de la función requiere autenticación.
- --set-env-varpara configurar tus credenciales de SendGrid
 
- Configura el control de acceso para la función de modo que solo permita usuarios autenticados. - Selecciona la función - sendEmailen la IU de Cloud Run Functions.
- Si no ves la información de permisos para - sendEmail, haz clic en MOSTRAR PANEL DE INFORMACIÓN en la esquina superior derecha.
- Haz clic en el botón Agregar principales que se encuentra arriba. 
- Establece Principales nuevas en - allAuthenticatedUsers.
- Configura el Rol. - Funciones de primera generación (1ª gen.): Establece el rol en Cloud Function Invoker.
- Funciones de segunda generación (2ª gen.): Establece el rol en Cloud Run Invoker.
 
- Funciones de primera generación (1ª gen.): Establece el rol en 
- Haz clic en GUARDAR. 
 
Crea una cola de Cloud Tasks
- Crea una cola con el siguiente comando de - gcloud:- gcloud tasks queues create my-queue --location=LOCATION - Reemplaza - LOCATIONpor la ubicación que prefieras para la fila, por ejemplo,- us-west2. Si no especificas la ubicación, gcloud CLI elige la predeterminada.
- Verifica que se haya creado correctamente: - gcloud tasks queues describe my-queue --location=LOCATION - Reemplaza - LOCATIONpor la ubicación de la fila.
Crea una cuenta de servicio
La solicitud de Cloud Tasks debe proporcionar credenciales en el encabezado Authorization para que la función de Cloud Run autentique la solicitud. Esta cuenta de servicio permite que Cloud Tasks cree y agregue un token OIDC para ese fin.
- En la IU de cuentas de servicio, haz clic en + CREAR CUENTA DE SERVICIO. 
- Agrega un nombre de cuenta de servicio (nombre visible descriptivo) y selecciona Crear. 
- Establece el Rol y haz clic en Continuar. - Funciones de primera generación (1ª gen.): Establece el rol en Cloud Function Invoker.
- Funciones de segunda generación (2ª gen.): Establece el rol en Cloud Run Invoker.
 
- Funciones de primera generación (1ª gen.): Establece el rol en 
- Seleccione Listo. 
Implementa el extremo y el creador de tareas en App Engine
- Navega al directorio - app/:- cd ../app/
- Actualiza las variables en - app.yamlcon tus valores:- Para encontrar la ubicación de tu fila, usa el siguiente comando: - gcloud tasks queues describe my-queue --location=LOCATION - Reemplaza - LOCATIONpor la ubicación de la fila.- Para encontrar la URL de tu función, usa el siguiente comando: - gcloud functions describe sendEmail 
- Implementa la aplicación en el entorno estándar de App Engine con el siguiente comando: - gcloud app deploy 
- Abre la aplicación para enviar una postal por correo electrónico: - gcloud app browse