En este instructivo, se muestra cómo programar una función de Cloud Run HTTP segmentando un extremo HTTP en Cloud Scheduler. Usa una función HTTP cuando necesites que tu función tenga un extremo de URL y responda a solicitudes HTTP, como para webhooks.
Como alternativa, si creaste una función de CloudEvents, usa los activadores de eventos de Eventarc para programar tu función para que responda a eventos dentro de tu proyecto. Eventarc puede activar mensajes en un tema de Pub/Sub, cambios en un bucket de Cloud Storage y mucho más. Para obtener más información, consulta Tipos de funciones de Cloud Run.
Programar la ejecución de una función de Cloud Run es un caso de uso común para Cloud Scheduler. En este instructivo, podrás:
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Antes de comenzar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
Click Done to finish creating the service account.
-
Ten en cuenta que debes otorgar el rol de invocador de Cloud Run porque, en las funciones de Cloud Run, los permisos de invocación están disponibles a través de la administración del servicio subyacente de Cloud Run.
Crea una función HTTP de Cloud Run
Crea una función de HTTP que se active con Cloud Scheduler.
En la consola de Google Cloud, ve a la página Cloud Run.
Haz clic en Escribe una función.
En la sección Configurar, haz lo siguiente:
- En el campo Nombre del servicio, ingresa un nombre para tu función.
- En la lista Región, selecciona una región.
- No modifiques el idioma predeterminado del entorno de ejecución.
Para la autenticación, selecciona Solicitar autenticación.
Si estás bajo una política de la organización de restricción de dominios que restringe las invocaciones no autenticadas para tu proyecto, deberás acceder al servicio implementado como se describe en Prueba servicios privados.
Para obtener más información, consulta Autentica para la invocación.
Acepta los otros valores predeterminados y haz clic en Crear.
Copia la URL HTTP de la función.
Crea un trabajo de Cloud Scheduler
Crea un trabajo de Cloud Scheduler que active una acción con HTTP.
En la consola de Google Cloud, ve a la página Cloud Scheduler.
Haz clic en
Crear trabajo.Ingresa un nombre para tu trabajo.
En la lista Región, selecciona una región.
Especifica la frecuencia de tu trabajo usando un formato unix-cron:
30 16 * * 7
Para obtener más información, consulta Formato y zona horaria de la tarea cron.
En la lista Zona horaria, selecciona una zona horaria.
Haz clic en Continuar.
En la lista Tipo de destino, selecciona HTTP.
En el campo URL, ingresa la URL HTTP de la función que copiaste antes.
En la lista Encabezado de autenticación, selecciona Agregar token OIDC.
En la lista Cuenta de servicio, selecciona la cuenta de servicio que creaste antes.
En el campo Público, ingresa la URL HTTP de la función que copiaste antes.
Haz clic en Crear.
Creaste un trabajo cron que ejecuta tu función de Cloud Run a las 16:30 los domingos.
Ejecuta tu trabajo de Cloud Scheduler
Ahora puedes ejecutar el trabajo que creaste.
En la consola de Google Cloud, ve a la página Cloud Scheduler.
Selecciona la casilla de verificación del trabajo que creaste y haz clic en Forzar ejecución.
Cuando se invoca por primera vez, el primer trabajo creado en un proyecto puede tardar unos minutos en configurarse y ejecutarse.
Después de que se ejecute el trabajo, el Estado de la última ejecución debería indicar
Success
.
Verifica los resultados en las funciones de Cloud Run
Puedes verificar que tu trabajo cron active y ejecute correctamente tu función de Cloud Run.
En la consola de Google Cloud, ve a la página Cloud Run.
Selecciona Filtrar servicios > Tipo de implementación > Función. Esto filtra la lista de servicios para que solo se muestren las funciones.
Haz clic en el nombre de la función.
Se abrirá la página Detalles del servicio y se mostrarán las métricas del servicio.
Haz clic en la pestaña Registros (Logs).
Deberías ver una entrada de registro similar a la siguiente:
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borrar proyecto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Elimina recursos de instructivos
En la consola de Google Cloud, ve a la página Cloud Scheduler.
Selecciona la casilla de verificación que se encuentra junto a tu trabajo.
Haz clic en
Borrar y confirma la eliminación.En la consola de Google Cloud, ve a la página Cloud Run.
Selecciona la casilla de verificación junto a tu servicio.
Haz clic en
Borrar y confirma la eliminación.En la consola de Google Cloud, ve a la página Cuentas de servicio.
Selecciona la casilla de verificación junto a la cuenta de servicio que creaste.
Haz clic en
Borrar y confirma la eliminación.
¿Qué sigue?
- Cómo usar Cloud Scheduler para activar Cloud Run según un programa
- Escribe funciones de CloudEvents para programar tu función para que responda a eventos dentro de tu proyecto.