En este tutorial se muestra cómo escribir una función HTTP de Cloud Run que envía una consulta a BigQuery.
Antes de empezar
Asegúrate de haber configurado un proyecto para Cloud Run tal como se describe en la página de configuración.
Habilita las APIs Artifact Registry, Cloud Build y Cloud Run Admin:
gcloud services enable artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com
Si tu proyecto está sujeto a una política de organización de restricción de dominio que restringe las invocaciones no autenticadas, tendrás que acceder al servicio desplegado tal como se describe en la sección Probar servicios privados.
Roles obligatorios
Para obtener los permisos que necesitas para desplegar servicios de Cloud Run desde el código fuente, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Desarrollador de fuentes de Cloud Run (
roles/run.sourceDeveloper
) en tu proyecto -
Consumidor de uso del servicio (
roles/serviceusage.serviceUsageConsumer
) en el servicio Cloud Run -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio -
Usuario de tareas de BigQuery (
roles/bigquery.jobUser
) en la identidad de servicio
Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.
Roles de la cuenta de servicio de Cloud Build
Tú o tu administrador debéis conceder el siguiente rol de gestión de identidades y accesos a la cuenta de servicio de Cloud Build.
Haz clic para ver los roles necesarios de la cuenta de servicio de Cloud Build
Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y tu recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build compile tus fuentes, pide a tu administrador que conceda el rol Compilador de Cloud Run (roles/run.builder
) a la cuenta de servicio predeterminada de Compute Engine de tu proyecto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sustituye PROJECT_NUMBER
por el número de tu proyecto Google Cloud
y PROJECT_ID
por el ID de tu proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.
La concesión del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.
Preparar 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
También puedes descargar el archivo de muestra como archivo zip y extraerlo.
Accede al directorio que contiene el código de muestra:
cd nodejs-docs-samples/functions/v2/helloBigQuery
Echa un vistazo al código de muestra. El ejemplo envía una consulta de palabras que aparecen al menos 400 veces en el conjunto de datos especificado y devuelve el resultado.
Desplegar la función
Para desplegar la función con un activador HTTP, sigue estos pasos:
Ejecuta el siguiente comando en el directorio que contiene el código de ejemplo:
gcloud run deploy FUNCTION \ --source . \ --function FUNCTION_ENTRYPOINT \ --base-image BASE_IMAGE \ --region REGION \ --allow-unauthenticated
Sustituye:
FUNCTION con 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 pedirá el nombre si lo haces.FUNCTION_ENTRYPOINT con el punto de entrada de tu función en el 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 completo que exista en el código fuente. El punto de entrada que debes especificar para la función de ejemplo es
helloBigQuery
.BASE_IMAGE con el entorno de imagen base de tu función, por ejemplo,
nodejs22
. Para obtener información sobre las imágenes base y los paquetes incluidos en cada imagen, consulta Imágenes base de los entornos de ejecución.REGION por la Google Cloud región en la que quieras desplegar tu función. Por ejemplo,
europe-west1
.
Optional:
- Si vas a crear una función HTTP pública (por ejemplo, un webhook),
especifica la marca
--allow-unauthenticated
. Esta marca asigna el rol de invocador de gestión de identidades y accesos de Cloud Run al identificador especialallUser
. Puedes usar la gestión de identidades y accesos para editar esta opción más adelante, después de crear el servicio.
Probar función
Cuando la función termine de implementarse, copia la propiedad
uri
.Visita este URI en tu navegador.
Verás una lista de las palabras que coinciden con los criterios de la consulta y el número de veces que aparece cada palabra en el conjunto de datos de destino.
Limpieza
Aunque Cloud Run no aplica cargos cuando el servicio no se está usando, es posible que se te cobre por almacenar la imagen de contenedor en Artifact Registry. Puede eliminar su imagen de contenedor o su proyecto Google Cloud para evitar que se le apliquen cargos. Al eliminar tu Google Cloud proyecto, se detendrá la facturación de todos los recursos utilizados 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.