En este tutorial se muestra cómo programar una función HTTP de Cloud Run dirigiéndose a un endpoint HTTP en Cloud Scheduler. Usa una función HTTP cuando necesites que tu función tenga un endpoint de URL y responda a solicitudes HTTP, como en el caso de los webhooks.
Si has creado una función de CloudEvents, puedes usar activadores de eventos de Eventarc para programar tu función de forma que responda a eventos de tu proyecto. Eventarc puede activar mensajes en un tema de Pub/Sub, cambios en un segmento de Cloud Storage y 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 habitual de Cloud Scheduler. En este tutorial, aprenderás a hacer lo siguiente:
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Antes de empezar
- 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
Create a service account:
-
Ensure that you have the Create Service Accounts IAM role
(
roles/iam.serviceAccountCreator
). Learn how to grant roles. -
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.
-
Ensure that you have the Create Service Accounts IAM role
(
-
Desarrollador de fuentes de Cloud Run (
roles/run.sourceDeveloper
) -
Administrador de Cloud Scheduler (
roles/cloudscheduler.admin
) -
Usuario con permiso para ver registros (
roles/logging.viewAccessor
) -
Administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin
) -
Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
) -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) -
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Ir a Gestión de identidades y accesos - Selecciona el proyecto.
- Haz clic en Conceder acceso.
-
En el campo Nuevos principales, introduce tu identificador de usuario. Normalmente, se trata de la dirección de correo de la cuenta de Google que se usa para desplegar el servicio de Cloud Run.
- En la lista Selecciona un rol, elige un rol.
- Para conceder más roles, haz clic en Añadir otro rol y añade cada rol adicional.
- Haz clic en Guardar.
- PROJECT_NUMBER con el número de tu proyecto. Google Cloud
- PROJECT_ID por el ID de tu proyecto. Google Cloud
- PRINCIPAL con la cuenta a la que quieres añadir la vinculación. Normalmente, se trata de la dirección de correo de la cuenta de Google que se usa para desplegar el servicio de Cloud Run.
- ROLE con el rol que vas a añadir a la cuenta del implementador.
En la Google Cloud consola, ve a la página Cloud Run.
Haz clic en Escribir una función.
En la sección Configurar, haga lo siguiente:
- En el campo Nombre del servicio, escribe el nombre de la función.
- En la lista Región, selecciona una región.
- No modifiques el idioma predeterminado del tiempo de ejecución.
En Autenticación, selecciona Pedir autenticación.
Si tu proyecto está sujeto a una política de organización de restricción de dominio que restringe las invocaciones no autenticadas, tendrás que acceder al servicio desplegado tal como se describe en la sección Probar servicios privados.
Para obtener más información, consulta Autenticación para la invocación.
Acepta los demás valores predeterminados y haz clic en Crear.
Copia la URL HTTP de la función.
En la Google Cloud consola, ve a la página Cloud Scheduler.
Haz clic en
Crear trabajo.Escribe el nombre del trabajo.
En la lista Región, selecciona una región.
Especifica la frecuencia de la tarea con el formato cron de UNIX:
30 16 * * 7
Para obtener más información, consulta Formato de las tareas cron y zona horaria.
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, introduce la URL HTTP de la función que has copiado anteriormente.
En la lista Encabezado de autorización, selecciona Añadir token de OIDC.
En la lista Cuenta de servicio, selecciona la cuenta de servicio que has creado anteriormente.
En el campo Audiencia, introduce la URL HTTP de la función que has copiado anteriormente.
Haz clic en Crear.
En la Google Cloud consola, ve a la página Cloud Scheduler.
Seleccione la casilla del trabajo que ha creado y haga 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.
Una vez que se haya ejecutado el trabajo, el Estado de la última ejecución debe indicar
Success
.En la Google Cloud consola, ve a la página Cloud Run.
Selecciona Filtrar servicios > Tipo de implementación > Función. De esta forma, la lista de servicios se filtra para mostrar únicamente las funciones.
Haz clic en el nombre de la función.
Se abrirá la página Detalles del servicio, donde se muestran las métricas del servicio.
Haz clic en la pestaña Registros.
Debería ver una entrada de registro similar a la siguiente:
POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME
- 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.
En la Google Cloud consola, ve a la página Cloud Scheduler.
Selecciona la casilla situada junto al trabajo.
Haz clic en
Eliminar y confirma que quieres eliminarlo.En la Google Cloud consola, ve a la página Cloud Run.
Selecciona la casilla situada junto al servicio.
Haz clic en
Eliminar y confirma que quieres eliminarlo.En la Google Cloud consola, ve a la página Cuentas de servicio.
Selecciona la casilla situada junto a la cuenta de servicio que has creado.
Haz clic en
Eliminar y confirma que quieres eliminarlo.- Usar Cloud Scheduler para activar Cloud Run según una programación
- Escribe funciones de CloudEvents para programar que tu función responda a eventos de tu proyecto.
Ten en cuenta que debes asignar el rol Invocador de Cloud Run, ya que en Cloud Run Functions, los permisos de invocación se gestionan mediante el servicio de Cloud Run subyacente.
Roles obligatorios
Para obtener los permisos que necesitas para completar el tutorial, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Conceder los roles
Consola
gcloud
Para conceder los roles de gestión de identidades y accesos necesarios a tu cuenta en tu proyecto, sigue estos pasos:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Sustituye:
Crear una función HTTP de Cloud Run
Crea una función HTTP que se active mediante Cloud Scheduler.
Crear una tarea de Cloud Scheduler
Crea una tarea de Cloud Scheduler que active una acción mediante HTTP.
Has creado un trabajo cron que ejecuta tu función de Cloud Run a las 16:30 los domingos.
Ejecutar la tarea de Cloud Scheduler
Ahora puedes ejecutar el trabajo que has creado.
Verificar los resultados en Cloud Run Functions
Puedes verificar que tu función de Cloud Run se ha activado y ejecutado correctamente mediante tu tarea cron.
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.