Programa una Cloud Function controlada por eventos


En este instructivo, se muestra cómo activar una Cloud Function controlada por eventos con Cloud Scheduler y para un tema de Pub/Sub. Usa un función controlada por eventos cuando tu función debería activarse directamente en respuesta a eventos en tu proyecto de Google Cloud, como mensajes en una Tema de Pub/Sub o cambios en un bucket de Cloud Storage.

Ten en cuenta que también puedes programar una función de HTTP segmentando el extremo HTTP de tu función. 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. Para obtener más información, consulta Tipos de Cloud Functions

Programar la ejecución de una Cloud Function es una caso de uso de Cloud Scheduler. En este instructivo, podrás:

  1. Cree una función de Cloud Functions que se suscriba a un tema Pub/Sub.
  2. Crear un trabajo de Cloud Scheduler que publique un mensaje en la Tema de Pub/Sub.
  3. Ejecutar el trabajo de Cloud Scheduler
  4. Verifica que la Cloud Function se haya activado por el Trabajo de Cloud Scheduler.

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. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Habilita las API

  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. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  8. Habilita las API de Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Habilita las API

  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 Cloud Functions (2nd gen), los permisos de invocación están disponibles administrando servicio de Cloud Run.

  11. De forma predeterminada, Cloud 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 políticas de tu organización, es posible que la cuenta de servicio predeterminada no tenga automáticamente el rol de editor en tu proyecto. Si ese es el caso, debes otorga 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 Cloud Function controlada por eventos

Crear una función controlada por eventos que se active directamente en respuesta a eventos en tu proyecto de Google Cloud en este caso, un mensaje publicado en un Tema de Pub/Sub.

  1. En la consola de Google Cloud, ve a Cloud Functions .

    Ir a Cloud Functions

  2. Haz clic en . Crear función.

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

    1. En la lista Entorno, selecciona 2nd gen.
    2. Ingresa un nombre para la 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 Cloud Pub/Sub.
    2. En la lista Tema de Cloud Pub/Sub, selecciona un tema existente o Para crear un tema nuevo, haz clic en Crear un tema. Anota el nombre del tema como lo necesitarás en un paso posterior.
    3. Haz clic en Más opciones.

      Se abrirá el panel Activador de Eventarc.

  5. En el panel Activador de Eventarc, haz lo siguiente:

    1. Si se te solicita que permitas que el servicio de Pub/Sub cree los tokens de identidad que necesita para invocar la función, haz clic en Otorgar.
    2. En la lista Cuenta de servicio, selecciona la cuenta de servicio que creados previamente.
    3. Acepta los otros valores predeterminados.
    4. Haz clic en Guardar activador.

      Se cerrará el panel del activador de Eventarc.

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

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

Crea un trabajo de Cloud Scheduler

Crear un trabajo de Cloud Scheduler con un destino de Pub/Sub

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

    Ir a Cloud Scheduler

  2. Haz clic en Clic . 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 Pub/Sub.

  9. Selecciona el tema de Pub/Sub que creaste antes.

  10. En el campo Cuerpo del mensaje, ingresa la cadena que desees enviar a tu Tema de destino de Pub/Sub. Por ejemplo: “Hello World!”

  11. Haz clic en Crear.

Creaste un trabajo cron que envía un mensaje a tu Pub/Sub. el domingo a las 4:30 p.m. Tu Cloud Function está suscrita en el tema.

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 de 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 inicialmente, el primer trabajo creado en un proyecto puede tardar unos minutos para configurarse y ejecutarse.

  3. Después de que se ejecuta el trabajo, el Estado de la última ejecución debe indicar Success.

Verifica los resultados en Cloud Functions

Puedes verificar que tu Cloud Function se haya activado correctamente y ejecutado por tu trabajo cron.

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

    Ir a Cloud Functions

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

    Se abrirá la página Detalles de la función y 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 Hello, YOUR_STRING!

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. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

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 tu y la eliminación de datos.

  4. En la consola de Google Cloud, ve a la página de Pub/Sub.

    Ir a Pub/Sub

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

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

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

    Ir a Cloud Functions

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

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

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

    Ir a Cuentas de servicio

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

  12. Haz clic en Borrar y confirma tu y la eliminación de datos.

¿Qué sigue?