Programa una función de HTTP de Cloud Run


En este instructivo, se muestra cómo activar una función de Cloud Run HTTP con Cloud Scheduler y segmentar un extremo HTTP. Usa una función de HTTP cuando necesitas que tu función tenga un extremo de URL y responda a las solicitudes HTTP, como y los webhooks.

Ten en cuenta que también puedes programar una función controlada por eventos cuando la función se deba activar directamente en respuesta a eventos dentro de tu proyecto de Google Cloud, como mensajes en un tema de Pub/Sub o cambios en un bucket de Cloud Storage. 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 una práctica caso de uso de Cloud Scheduler. En este instructivo, podrás:

  1. Crear una función de HTTP simple de Cloud Run
  2. Crear un trabajo de Cloud Scheduler
  3. Ejecutar el trabajo de Cloud Scheduler
  4. Verifica que el trabajo de Cloud Scheduler haya activado la función de Cloud Run.

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. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.

    Enable the APIs

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

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

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. 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.

    Go to project selector

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

  8. Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler APIs.

    Enable the APIs

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

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

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

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

  10. Ten en cuenta que debes otorgar el rol de invocador de Cloud Run porque, en las funciones de Cloud Run (2ª gen.), los permisos de invocación están disponibles mediante la administración del servicio subyacente de Cloud Run.

  11. De forma predeterminada, Cloud Run Functions usa los recursos cuenta de servicio predeterminada de Compute Engine para la cuenta de servicio del entorno de ejecución. Puedes usar esta cuenta de servicio para probar este instructivo. Sin embargo, según la configuración de la política de la organización, es posible que a la cuenta de servicio predeterminada no se le otorgue automáticamente el rol de editor en tu proyecto. Si ese es el caso, debes otorgarle a la cuenta de servicio los siguientes roles:
    1. Escritor de Artifact Registry (roles/artifactregistry.writer)
    2. Escritor de registros (roles/logging.logWriter)
    3. Visualizador de objetos de Storage (roles/storage.objectViewer)

Crea una función de HTTP de Cloud Run

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

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

    Ve a las funciones de Cloud Run

  2. Haz clic en . Crear función.

  3. En la sección Aspectos básicos, haz lo siguiente:

    1. En la lista Entorno, selecciona Función de Cloud Run.
    2. Ingresa un nombre para tu función.
    3. En la lista Región, selecciona una región.
  4. En la sección Activador, haz lo siguiente:

    1. En la lista Tipo de activador, selecciona HTTPS.
    2. Para la autenticación, selecciona Solicitar autenticación.

      Para obtener más información, consulta Autentica para la invocación (2ª gen.).

  5. Acepta los otros valores predeterminados y haz clic en Siguiente.

  6. No modifiques el lenguaje de ejecución predeterminado ni el código de muestra. El código no usa ningún servicio en la nube y no necesita permisos adicionales habilitados. Haz clic en Implementar.

  7. Una vez que la función se haya implementado correctamente, haz clic en la pestaña Activador.

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

Crea un trabajo de Cloud Scheduler

Crear un trabajo de Cloud Scheduler que active una acción con HTTP

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

    Ir a Cloud Scheduler

  2. Haz clic en Crear trabajo.

  3. Ingresa un nombre para tu trabajo.

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

  5. Especifica la frecuencia de tu trabajo con un formato cron de Unix:

    30 16 * * 7
    

    Para obtener más información, consulta Formato y zona horaria del trabajo cron.

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

  7. Haga clic en Continuar.

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

  9. En el campo URL, ingresa la URL HTTP de la función que usaste copiado.

  10. En la lista Encabezado de autenticación, selecciona Agregar token de OIDC.

  11. En la lista Cuenta de servicio, selecciona la cuenta de servicio que crear.

  12. En el campo Público, ingresa la URL HTTP de la función que copiaste antes.

  13. Haz clic en Crear.

Creaste un trabajo cron que ejecuta tu función de Cloud Run a las 4:30 p.m. Domingos

Ejecuta tu trabajo de Cloud Scheduler

Ahora puedes ejecutar el trabajo que creaste.

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

    Ir a Cloud Scheduler

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

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

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

    Ve a las funciones de Cloud Run

  2. Haz clic en el nombre de la función.

    Se abrirá la página Detalles de la función y se abrirá el gráfico Invocations/Second se mostrará tu primera invocación de la función.

  3. Haz clic en la pestaña Registros.

    Deberías ver una entrada de registro similar a POST 200 146 B 5 ms Google-Cloud-Scheduler https://REGION-PROJECT_ID.cloudfunctions.net/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

  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.

Elimina recursos de instructivos

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

    Ir a Cloud Scheduler

  2. Selecciona la casilla de verificación que se encuentra junto a tu trabajo.

  3. Haz clic en Borrar y confirma la eliminación.

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

    Ve a las funciones de Cloud Run

  5. Selecciona la casilla de verificación junto a tu función.

  6. Haz clic en Borrar y confirma la eliminación.

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

    Ir a Cuentas de servicio

  8. Selecciona la casilla de verificación junto a la cuenta de servicio que creaste.

  9. Haz clic en Borrar y confirma la eliminación.

¿Qué sigue?