Programa una función de Cloud Run basada en eventos

En este instructivo, se muestra cómo activar una función de Cloud Run controlada por eventos con Cloud Scheduler y cómo orientarla a un tema de Pub/Sub. Usa una función basada en eventos cuando la función se deba activar directamente en respuesta a eventos de tu Google Cloud proyecto de, como mensajes en un 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 orientando el extremo HTTP de tu función. Usa una función de HTTP cuando necesites que la función tenga un extremo de URL y responda a solicitudes HTTP, como en el caso de los webhooks. 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 práctico común para Cloud Scheduler. En este instructivo, podrás:

  1. Crear una función simple de Cloud Run que se suscriba a un tema de Pub/Sub
  2. Crear un trabajo de Cloud Scheduler que publique un mensaje en el tema de Pub/Sub
  3. Ejecutar el trabajo de Cloud Scheduler
  4. Verificar 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 Google Cloud nuevos decumplan con los requisitos para acceder a una prueba gratuita.

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. 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.

    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 role (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, Eventarc 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) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). 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 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.

    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 role (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, Eventarc 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) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). 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 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.

    7. Click Continue.
    8. 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, las funciones de Cloud Run usan la cuenta de servicio predeterminada de Compute Engine creada automáticamente para su cuenta de servicio de 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 otorgar 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 Cloud Run controlada por eventos

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

  1. En la Google Cloud consola, 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 Conceptos básicos, haz lo siguiente:

    1. En la lista Entorno, selecciona 2ª gen.
    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 Cloud Pub/Sub.
    2. En la lista Tema de Cloud Pub/Sub , selecciona un tema existente o, para crear uno nuevo, haz clic en Crear un tema. Ten en cuenta el nombre del tema, ya que 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 creaste anteriormente.
    3. Acepta los otros valores predeterminados.
    4. Haz clic en Guardar activador.

      Se cerrará el panel Activador de Eventarc.

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

  7. No modifiques el lenguaje de entorno 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.

Crea un trabajo de Cloud Scheduler

Crea un trabajo de Cloud Scheduler con un destino de Pub/Sub.

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

    Ir a Cloud Scheduler

  2. Haz clic en Click 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 usando un formato unix-cron:

    30 16 * * 7
    

    Para obtener más información, consulta Formato de trabajos 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 Pub/Sub.

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

  10. En el campo Cuerpo del mensaje, ingresa una cadena que se enviará al tema de destino de Pub/Sub. Por ejemplo: "¡Hola, mundo!"

  11. Haz clic en Crear.

Creaste un trabajo cron que envía un mensaje a tu tema de Pub/Sub a las 16:30 los domingos. Tu función de Cloud Run está suscrita a ese tema.

Ejecuta tu trabajo de Cloud Scheduler

Ahora puedes ejecutar el trabajo que creaste.

  1. En la Google Cloud consola, 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 debe indicar Success.

Verifica los resultados en las funciones de Cloud Run

Puedes verificar que tu trabajo cron haya activado y ejecutado correctamente tu función de Cloud Run.

  1. En la Google Cloud consola, ve a la páginaFunciones 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 el gráfico Invocaciones/segundo 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 Google Cloud consola, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que tú 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 Google Cloud consola, 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 Google Cloud consola de, ve a la página Pub/Sub.

    Ir a Pub/Sub

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

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

  7. En la Google Cloud consola, ve a la páginaFunciones de Cloud Run.

    Ve a las funciones de Cloud Run

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

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

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

    Ir a Cuentas de servicio

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

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

¿Qué sigue?