En este instructivo, se muestra cómo escribir una función de Cloud Run HTTP que envía una consulta a BigQuery.
Antes de comenzar
Asegúrate de haber configurado un proyecto nuevo para Cloud Run, como se describe en la página de configuración.
Habilita las APIs de Artifact Registry, Cloud Build y Cloud Run Admin:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
Si estás bajo una política de la organización de restricción de dominios que restringe las invocaciones no autenticadas para tu proyecto, deberás acceder al servicio implementado como se describe en Prueba servicios privados.
Roles obligatorios
Para obtener los permisos que necesitas para implementar los servicios de Cloud Run desde la fuente, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Desarrollador de origen de Cloud Run (
roles/run.sourceDeveloper
) en el servicio de Cloud Run -
Consumidor de Service Usage (
roles/serviceusage.serviceUsageConsumer
) en el servicio de Cloud Run -
Usuario de la cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad del servicio -
Usuario de trabajo de BigQuery (
roles/bigquery.jobUser
) en la identidad del servicio
Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con las APIs deGoogle Cloud , como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información sobre cómo otorgar roles, consulta permisos de implementación y administra el acceso.
Roles de la cuenta de servicio
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Reemplaza PROJECT_NUMBER
por el número de proyecto de Google Cloud
y PROJECT_ID
por el ID del proyecto de Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta Crea y administra proyectos.
El otorgamiento del rol de cuenta de servicio de Cloud Build a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.
Prepara la aplicación
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Como alternativa, descarga la muestra como un archivo ZIP y extráela.
Dirígete al directorio que contiene el código de muestra:
cd nodejs-docs-samples/functions/v2/helloBigQuery
Ve el código de muestra. La muestra envía una consulta de palabras que ocurren al menos 400 veces en el conjunto de datos especificado y muestra el resultado.
Implementa la función
Para implementar la función con un activador HTTP, haz lo siguiente:
Ejecuta el siguiente comando en el directorio que contiene el código de muestra:
gcloud beta run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Reemplaza lo siguiente:
Reemplaza FUNCTION por el nombre de la función que vas a implementar, por ejemplo,
my-bigquery-function
. Puedes omitir este parámetro por completo, pero se te solicitará el nombre si lo haces.FUNCTION_ENTRYPOINT por el punto de entrada a tu función en tu código fuente. Este es el código que ejecuta Cloud Run cuando se ejecuta tu función. El valor de esta marca debe ser un nombre de función o un nombre de clase completamente calificado que exista en tu código fuente. El punto de entrada que debes especificar para la función de ejemplo es
helloBigQuery
.BASE_IMAGE por el entorno de imagen base de tu función, por ejemplo,
nodejs22
. Para obtener detalles sobre las imágenes base y los paquetes incluidos en cada una, consulta Imágenes base de los entornos de ejecución.REGION por la región de Google Clouden la que deseas implementar tu función. Por ejemplo,
us-central1
.
Opcional:
- Si creas una función de HTTP pública, por ejemplo, un webhook, especifica la marca
--allow-unauthenticated
. Esta marca asigna el rol de invocador de IAM de Cloud Run al identificador especialallUser
. Puedes usar IAM para editar esta configuración más adelante una vez que hayas creado el servicio.
Prueba la función
Cuando la función termine de implementarse, copia la propiedad
uri
.Visita este URI en tu navegador.
Deberías ver una lista de las palabras que coinciden con los criterios de la consulta y cuántas veces aparece cada palabra en el conjunto de datos de destino.
Limpia
Si bien Cloud Run no cobra cuando el servicio no se usa, es posible que se te cobre por el almacenamiento de la imagen de contenedor en Artifact Registry. Puedes borrar la imagen de contenedor o borrar el proyecto de Google Cloud para evitar que se apliquen cargos. Si borras tu proyecto de Google Cloud , se detendrá la facturación de todos los recursos que se usen en ese proyecto.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.