Programar una función HTTP de Cloud Run


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:

  1. Crea una función HTTP sencilla de Cloud Run.
  2. Crea una tarea de Cloud Scheduler.
  3. Ejecuta la tarea de Cloud Scheduler.
  4. Verifica que el trabajo de Cloud Scheduler activa tu función de Cloud Run.

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.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Antes de empezar

  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. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

    5. Click Create and continue.
    6. 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.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  6. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  9. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. 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.

    5. Click Create and continue.
    6. 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.

    7. Click Continue.
    8. Click Done to finish creating the service account.

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

    1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

      Ir a Gestión de identidades y accesos
    2. Selecciona el proyecto.
    3. Haz clic en Conceder acceso.
    4. 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.

    5. En la lista Selecciona un rol, elige un rol.
    6. Para conceder más roles, haz clic en Añadir otro rol y añade cada rol adicional.
    7. Haz clic en Guardar.

    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:

    • 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.

    Crear una función HTTP de Cloud Run

    Crea una función HTTP que se active mediante Cloud Scheduler.

    1. En la Google Cloud consola, ve a la página Cloud Run.

      Ir a Cloud Run

    2. Haz clic en Escribir una función.

    3. En la sección Configurar, haga lo siguiente:

      1. En el campo Nombre del servicio, escribe el nombre de la función.
      2. En la lista Región, selecciona una región.
      3. No modifiques el idioma predeterminado del tiempo de ejecución.
      4. 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.

    4. Acepta los demás valores predeterminados y haz clic en Crear.

    5. Copia la URL HTTP de la función.

    Crear una tarea de Cloud Scheduler

    Crea una tarea de Cloud Scheduler que active una acción mediante HTTP.

    1. En la Google Cloud consola, ve a la página Cloud Scheduler.

      Ir a Cloud Scheduler

    2. Haz clic en Crear trabajo.

    3. Escribe el nombre del trabajo.

    4. En la lista Región, selecciona una región.

    5. 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.

    6. En la lista Zona horaria, selecciona una zona horaria.

    7. Haz clic en Continuar.

    8. En la lista Tipo de destino, selecciona HTTP.

    9. En el campo URL, introduce la URL HTTP de la función que has copiado anteriormente.

    10. En la lista Encabezado de autorización, selecciona Añadir token de OIDC.

    11. En la lista Cuenta de servicio, selecciona la cuenta de servicio que has creado anteriormente.

    12. En el campo Audiencia, introduce la URL HTTP de la función que has copiado anteriormente.

    13. Haz clic en Crear.

    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.

    1. En la Google Cloud consola, ve a la página Cloud Scheduler.

      Ir a Cloud Scheduler

    2. 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.

    3. Una vez que se haya ejecutado el trabajo, el Estado de la última ejecución debe indicar Success.

    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.

    1. En la Google Cloud consola, ve a la página Cloud Run.

      Ir a Cloud Run

    2. Selecciona Filtrar servicios > Tipo de implementación > Función. De esta forma, la lista de servicios se filtra para mostrar únicamente las funciones.

    3. 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.

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

    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.

    Eliminar proyecto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Eliminar recursos del tutorial

    1. En la Google Cloud consola, ve a la página Cloud Scheduler.

      Ir a Cloud Scheduler

    2. Selecciona la casilla situada junto al trabajo.

    3. Haz clic en Eliminar y confirma que quieres eliminarlo.

    4. En la Google Cloud consola, ve a la página Cloud Run.

      Ir a Cloud Run

    5. Selecciona la casilla situada junto al servicio.

    6. Haz clic en Eliminar y confirma que quieres eliminarlo.

    7. En la Google Cloud consola, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    8. Selecciona la casilla situada junto a la cuenta de servicio que has creado.

    9. Haz clic en Eliminar y confirma que quieres eliminarlo.

    Siguientes pasos