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.
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.
Haz clic en Crear conexión (Create connection).
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 a este:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Usa el recurso google_bigquery_connection
.
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.
En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection
en la región US
:
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Otorga acceso a la cuenta de servicio
Para crear funciones remotas, debes otorgar los roles necesarios a funciones de Cloud Run o Cloud Run.
Para 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 siguientes opciones:
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://BUCKET \ --member=serviceAccount:MEMBER \ --role=roles/storage.objectViewer
Reemplaza lo siguiente:
BUCKET
: Es el nombre de tu bucket de almacenamiento.MEMBER
: Es 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
Usa el recurso google_bigquery_connection
.
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.
En el siguiente ejemplo, se otorga acceso de rol de IAM a la cuenta de servicio de la conexión de recursos de Cloud:
Para aplicar tu configuración de Terraform en un proyecto de Google Cloud, completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto de Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto de Google Cloud para ver los resultados. En la consola de Google Cloud, navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
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.