Programa una Cloud Function con Pub/Sub

Este tutorial le muestra cómo usar Cloud Scheduler y Pub/Sub para activar una función de Cloud Functions. Poder programar la ejecución de una Cloud Function es un caso práctico común para Cloud Scheduler. Realizarás lo siguiente:

  • Cree una función de Cloud Functions que se suscriba a un tema Pub/Sub.
  • Crear un tema de Pub/Sub para activar esa función
  • Crear un trabajo de Cloud Scheduler que invoque el activador de Pub/Sub
  • Ejecutar el trabajo de Cloud Scheduler
  • Verificar el éxito

Antes de comenzar

Para este instructivo, suponemos que ya completaste la Guía de inicio rápido de Cloud Scheduler. Como resultado, tienes a tu disposición las siguientes herramientas y recursos:

  • Un proyecto de Google Cloud con facturación habilitada.

  • La API de Cloud Scheduler y la API de Pub/Sub están habilitadas en el proyecto. (la API de Cloud Functions se habilita durante el instructivo)

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

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.

Crea una Cloud Function con un activador

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

    Ir a Cloud Functions

  2. Haz clic en Habilitar API si se te solicita.

  3. Haz clic en Crear función. Si aparece un mensaje que te solicita que habilites las APIs, haz clic en Habilitar para activarlas.

  4. En la sección Basics, selecciona el entorno de 2a gen., ingresa un nombre para tu función y selecciona una región.

  5. En la sección Activador, selecciona Solicitar autenticación. Haz clic en Agregar activador y selecciona Activador de Pub/Sub. Se abrirá el panel Activador de Eventarc. Si se te solicita Habilitar las APIs obligatorias, haz clic en Habilitar.

  6. En el panel Activador de Eventarc, asegúrate de que los primeros campos se completen de la siguiente manera o complétalos si es necesario:

    • Tipo de activador: Fuentes de Google
    • Proveedor de eventos: Cloud Pub/Sub
    • Evento: google.cloud.pubsub.topic.v1.messagePublished
  7. En el campo Selecciona un tema de Cloud Pub/Sub, selecciona un tema existente o haz clic en Crear tema nuevo para crear uno nuevo. Tu función se suscribe a este tema. Anota el nombre del tema. Lo necesitarás más adelante.

    • Si se te solicita, haz clic en Otorgar a fin de permitir que el servicio de Pub/Sub cree los tokens de identidad que necesitará para activar la función. Recuerda que seleccionaste Solicitar autenticación para la función anteriormente. Pub/Sub usa los tokens de identidad para la autenticación requerida.
  8. En el campo Cuenta de servicio, haz clic en Crear una cuenta de servicio nueva.

    1. Ingresa un nombre para la cuenta de servicio y haz clic en Crear. Eventarc usa esta cuenta de servicio para invocar la función con un token de identidad desde el servicio de Pub/Sub.

    2. En la sección Otorga a esta cuenta de servicio acceso al proyecto, selecciona la función Invocador de Cloud Run. Esto le otorga a la cuenta de servicio la capacidad de invocar tu función de 2a generación.

    3. Haz clic en Listo.

  9. Deja la opción Reintentar en caso de error sin seleccionar. Haz clic en Guardar activador.

  10. Expande la sección Entorno de ejecución, compilación, conexiones y configuración de seguridad y selecciona la pestaña Tiempo de ejecución.

  11. En Cuenta de servicio del entorno de ejecución, en el campo Cuenta de servicio, haz clic en Crear. El flujo de creación de cuentas de servicio se abrirá en una pestaña nueva. Esta cuenta de servicio es la identidad que tiene la Cloud Function cuando se ejecuta.

    1. Ingresa un nombre para la cuenta de servicio.
    2. Haz clic en Crear y continuar.
    3. Haz clic en Listo.

    Se te redireccionará a la página Cuentas de servicio de la consola de Google Cloud. Puedes cerrar esta pestaña.

  12. Regresa al campo Cuenta de servicio en la página de creación de la función, haz clic en Actualizar y, luego, selecciona la cuenta de servicio que acabas de crear.

  13. Haz clic en Siguiente. Si se te solicita habilitar alguna de las APIs requeridas, haz clic en Habilitar.

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

Crea un trabajo de Cloud Scheduler

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

    Ir a Cloud Scheduler

  2. Haz clic en Create job.

  3. Si es necesario, selecciona una región en la que se ejecutará tu trabajo.

  4. Asigna un nombre a tu trabajo y, de forma opcional, agrega una descripción.

  5. Especifica la frecuencia de tu trabajo usando el formato unix-cron.

    30 16 * * 7
    

    Consulta Configura trabajo cron cron para obtener más información.

  6. Selecciona tu zona horaria.

  7. Haga clic en Continue.

  8. En la sección Configura la ejecución, selecciona Pub/Sub como el tipo de destino.

  9. Selecciona el nombre de tu Tema.

  10. Agrega una string breve de Mensaje para que se envíe a tu destino.

  11. Haz clic en Crear.

Ahora tienes un trabajo cron que envía un mensaje a tu tema de Pub/Sub a las 16:30 los domingos. Tu Cloud Function está suscrita a ese tema.

Ejecuta tu trabajo

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 el trabajo que creaste.

  3. Haz clic en Forzar ejecución.

    El primer trabajo creado en un proyecto puede tardar unos minutos en ejecutarse cuando se invoca por primera vez debido a la configuración necesaria.

  4. Observa la columna Estado de la última ejecución. Una vez que se ejecute el trabajo, esta columna debería decir “Satisfactorio”.

¡Felicitaciones! Acabas de usar la consola para ver los resultados de la ejecución de un trabajo cron que envía un mensaje a Pub/Sub. A continuación, aprenderás cómo verificar que tu Cloud Function se haya ejecutado realmente.

Verifica los resultados en Cloud Functions

Para verificar que tu trabajo cron esté activado de forma correcta tu Cloud Function, sigue estos pasos:

  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.

  3. Se abrirá la página Detalles de la función. El gráfico Invocations/Seconds debería mostrar tu primera invocación de la función. Para ver los detalles de la invocación, haz clic en Registros.

¡Felicitaciones! Se ejecutó tu función.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en este instructivo, sigue estos pasos:

Borra el trabajo de Cloud Scheduler

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

    Ir al programador

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

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

Borra el tema de Pub/Sub

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

    Ir a Pub/Sub

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

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

Borra la función de Cloud Functions

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

    Ir a Cloud Functions

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

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

Borra las cuentas de servicio

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

    Ir a Cuentas de servicio

  2. Selecciona la casilla de verificación junto a las cuentas de servicio que creaste.

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

Inhabilita las APIs

Si habilitaste alguna API en el transcurso de este instructivo (como las APIs de Eventarc, Cloud Functions o Pub/Sub), inhabilítalas. Inhabilitar las APIs afecta el acceso a la API del proyecto, por lo que no debes inhabilitarlas si otros recursos de tu proyecto las usan.

  1. En la consola de Google Cloud, ve a la página API y servicios.

    Ir a API y servicios.

  2. Haz clic en la API que deseas inhabilitar. Aparecerá una página que describe la API.

  3. Haz clic en Inhabilitar API.

Borra el proyecto

Si creaste un proyecto solo para este instructivo.

  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.