Crea y configura una conexión de recursos de Cloud
Como administrador de BigQuery, puedes crear una conexión de recursos de Cloud que permita a los analistas de datos realizar las siguientes tareas:
- Consultar datos estructurados de Cloud Storage mediante tablas de BigLake. Las tablas de BigLake te permiten consultar datos externos con delegación de acceso.
- Consultar datos no estructurados en Cloud Storage mediante tablas de objetos.
- Implementar funciones remotas con cualquier lenguaje compatible con funciones de Cloud Run o Cloud Run.
Para obtener más información sobre las conexiones, consulta Introducción a las conexiones.
Antes de comenzar
Habilita la API de conexión de BigQuery.
-
Para obtener los permisos que necesitas para crear una conexión de Cloud Resource, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin
) en el proyecto -
Visualizador de objetos de almacenamiento (
roles/storage.objectViewer
) en el bucket
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Si quieres consultar datos estructurados mediante las siguientes opciones:Tablas de BigLake basadas en Cloud Storage o datos no estructurados con Tablas de objetos, la cuenta de servicio asociada con la conexión también debe tener el rol de Visualizador de almacenamiento (roles/storage.viewer
) en el bucket que contiene los datos externos.
-
Administrador de conexión de BigQuery (
- Asegúrate de que tu versión del SDK de Google Cloud sea 366.0.0 o posterior:
gcloud version
Si es necesario, actualiza el SDK de Google Cloud.
- Opcional: Para Terraform, usa la versión 4.25.0 o una posterior de Terraform GCP. Puedes descargar la última versión desde las descargas de HashiCorp Terraform.
Consideración de la ubicación
Si usas Cloud Storage para almacenar archivos de datos, te recomendamos que uses buckets de Cloud Storage de una sola región o de una birregionales. para obtener un rendimiento óptimo. No utilices buckets multirregionales.
Crea conexiones de recursos de Cloud
BigLake usa una conexión para acceder a Cloud Storage. Puedes usar esta conexión con una sola tabla o con un grupo de tablas.
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
Para crear una conexión, haz clic en
Agregar y, luego, en Conexiones a fuentes de datos externas.En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas y BigLake (Cloud Resource).
En el campo ID de conexión, escribe un nombre para tu conexión.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, crea una conexión:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
El parámetro
--project_id
anula el proyecto predeterminado.Reemplaza lo siguiente:
REGION
: tu región de conexiónPROJECT_ID
: El ID del proyecto de Google Cloud.CONNECTION_ID
: Es un ID para tu conexión.
Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.
Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
El resultado es similar al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Agrega la siguiente sección a tu archivo main.tf
.
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: Es un ID para tu conexión.PROJECT_ID
: El ID del proyecto de Google Cloud.REGION
: tu región de conexión
Otorga acceso a la cuenta de servicio
Si deseas crear funciones remotas, debes otorgar los roles necesarios a funciones de Cloud Run o Cloud Run.
Si deseas conectarte a Cloud Storage, debes otorgar a la nueva conexión acceso de solo lectura a Cloud Storage para que BigQuery pueda acceder a los archivos en nombre de los usuarios.
Selecciona una de las opciones siguientes:
Console
Recomendamos que otorgues a la cuenta de servicio de recurso de conexión la función de IAM de Visualizador de objetos de almacenamiento(roles/storage.objectViewer
), que permite que la cuenta de servicio acceda a los buckets de Cloud Storage.
Ir a la página IAM y administración
Haga clic en
Agregar.Se abre el cuadro de diálogo Agregar principales.
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona una función, elige Cloud Storage y, luego, Visualizador de objetos de almacenamiento.
Haz clic en Guardar.
gcloud
Usa el comando gcloud storage buckets add-iam-policy-binding
:
gcloud storage buckets add-iam-policy-binding gs://example-bucket \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
Reemplaza MEMBER
por el ID de la cuenta de servicio que copiaste antes.
Para obtener más información, consulta Agrega una principal a una política a nivel del bucket.
Terraform
Agrega la siguiente sección a tu archivo main.tf
.
## This grants permissions to the service account of the connection created in the last step. resource "google_project_iam_member" "connectionPermissionGrant" { project = "PROJECT_ID" role = "roles/storage.objectViewer" member = format("serviceAccount:%s", google_bigquery_connection.connection.cloud_resource[0].service_account_id) }
Comparte conexiones con usuarios
Puedes otorgar los siguientes roles para permitir que los usuarios consulten datos y administren conexiones:
roles/bigquery.connectionUser
: Permite que los usuarios usen conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.roles/bigquery.connectionAdmin
: Permite que los usuarios administren conexiones.
Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
Las conexiones se enumeran en tu proyecto, en un grupo llamado Conexiones externas.
En el panel Explorador, haz clic en el nombre de tu proyecto > Conexiones externas > conexión.
En el panel Detalles, haz clic en Compartir para compartir una conexión. A continuación, sigue estos pasos:
En el cuadro de diálogo Permisos de conexión, agrega o edita las principales para compartir la conexión con otros principales.
Haz clic en Guardar.
bq
No puedes compartir una conexión con la herramienta de línea de comandos de bq. Para compartir una conexión, usa la consola de Google Cloud o el método de la API de conexiones de BigQuery.
API
Consulta el método projects.locations.connections.setIAM
en la sección de referencia de la API de REST de las conexiones de BigQuery y proporciona una instancia del recurso policy
.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
¿Qué sigue?
- Obtén información sobre los diferentes tipos de conexión.
- Obtén información sobre cómo administrar conexiones.
- Obtén más información sobre tablas de BigLake.
- Aprende a crear tablas de BigLake.
- Obtén información sobre cómo actualizar tablas externas a tablas de BigLake.
- Obtén información sobre las tablas de objetos y cómo crearlas.
- Obtén información para implementar funciones remotas.