En este documento, se describe cómo configurar una conexión entre nubes para consultar datos de un catálogo de Snowflake Horizon directamente enGoogle Cloud. Esta capacidad unifica tu análisis de datos integrando tus fuentes de datos externas con tu entorno Google Cloudexistente.
Luego, puedes usar Lakehouse sin fronteras para administrar el acceso a tus datos federados.
Antes de comenzar
- Revisa la descripción general de Lakehouse para comprender cómo Lakehouse administra el acceso a los datos.
- Lee acerca del acceso a los datos entre nubes para comprender cómo funciona.
- Revisa los catálogos compatibles para verificar las configuraciones admitidas.
- Comprende cómo usar los Secrets regionales de Secret Manager. Esto es necesario para configurar Lakehouse con el catálogo de Snowflake Horizon usando la autenticación basada en secretos.
- Opcional: Si planeas enrutar consultas a través de una interconexión privada entre tu VPC de Google Cloud y la VPC de tu proveedor de nube remoto (por ejemplo, AWS), asegúrate de tener una cuenta activa con tu proveedor remoto, aprovisiona una interconexión entre nubes dedicada o una interconexión entre nubes de socio, establece sesiones BGP con tu Cloud Router y verifica que tengas los permisos de IAM necesarios en ambos entornos de nube.
- Accede a tu cuenta de Google Cloud . 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.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Roles obligatorios
Para obtener los permisos que necesitas para configurar el acceso entre nubes, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
-
Administrar catálogos de Lakehouse:
Administrador de BigLake (
roles/biglake.admin) -
Administra secretos (si usas la autenticación basada en secretos): Administrador de Secret Manager (
roles/secretmanager.admin) -
Enrutar el tráfico a través de la interconexión privada (usuario):
Administrador de red de Compute (
roles/compute.networkAdmin) -
Enruta el tráfico a través de una interconexión privada (cuenta de servicio del catálogo):
- Visualizador del Directorio de servicios (
roles/servicedirectory.viewer) - Servicio autorizado por PSC del Directorio de servicios (
roles/servicedirectory.pscAuthorizedService)
- Visualizador del Directorio de servicios (
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 a través de roles personalizados o cualquier otro rol predefinido.
Detalles del catálogo admitidos
En esta guía, se proporcionan instrucciones para configurar Lakehouse con un catálogo de Snowflake Horizon en Amazon Web Services (AWS) o Google Cloud. Para obtener información detallada sobre los requisitos de ubicación externa y las configuraciones admitidas, consulta Catálogos admitidos.
Limitaciones y consideraciones
En esta sección, se enumeran las limitaciones y consideraciones para acceder a los datos entre nubes.
- Proveedores de servicios en la nube admitidos para Cross‑Cloud Interconnect: El uso de una interconexión privada con tu Lakehouse sin límites se admite con los siguientes proveedores de servicios en la nube remotos: Amazon Web Services (AWS). Puedes usar una interconexión dedicada de Cross-Cloud Interconnect o una interconexión de socio de Cross-Cloud Interconnect.
- Tablas compatibles: Solo se sincronizan las tablas de Snowflake Iceberg con Lakehouse. Las tablas nativas estándar de Snowflake se ignoran durante la actualización de metadatos.
- Solo lectura: Los catálogos federados en Lakehouse son vistas de solo lectura del catálogo remoto. No se admite la manipulación de recursos (como la creación, actualización o eliminación de recursos), que debe realizarse directamente en el catálogo remoto.
- Enrutamiento de red: Si no se configura una interconexión privada (como CCI dedicada o CCI de socio), las búsquedas se enrutan a través de Internet pública. Esto puede generar tarifas de salida más altas de tu proveedor de nube remoto y un rendimiento menos predecible.
- Actualidad de los datos: La marca
--refresh-intervalde un catálogo federado determina la frecuencia con la que se sincronizan los metadatos. El valor debe ser0s(inhabilitado) o, al menos,300s(5 minutos). La actualización de metadatos en segundo plano de un catálogo puede tardar más cuanto más recursos de espacio de nombres y tablas haya. Si la actualización anterior se extiende demasiado, se omitirá la actualización actual, pero la próxima se programará en el siguiente intervalo.
Flujo de trabajo general
Para acceder a los datos en varias nubes, sigue estos pasos generales:
- Configura Cross-Cloud Interconnect (opcional): Configura una conexión privada entre tu VPC Google Cloud y tu proveedor de nube remoto.
- Configura la federación: Configura la autenticación y crea un catálogo federado en Lakehouse.
- Autenticación basada en secretos (PAT): Crea un secreto en Secret Manager con las credenciales de tu catálogo remoto. Luego, crea un catálogo federado en Lakehouse y otorga acceso a la cuenta de servicio del catálogo al secreto.
- Federación de identidades para cargas de trabajo (WIF): Crea un catálogo federado en Lakehouse especificando el rol de Snowflake requerido. Luego, vincula el ID de la cuenta de servicio del catálogo a un usuario de servicio en Snowflake. El usuario del servicio de Snowflake debe tener permisos de uso en el catálogo remoto de Snowflake Horizon.
- Verifica la conexión: Verifica que Lakehouse pueda conectarse correctamente a tu catálogo remoto.
- Consulta datos: Ejecuta consultas en tus datos federados con BigQuery o Managed Service para Apache Spark. Para obtener más información, consulta Cómo consultar datos remotos.
- Configura los permisos: Usa IAM para administrar quién puede ver y consultar los datos federados.
Configura Cross‑Cloud Interconnect (opcional)
De forma predeterminada, las consultas a tu catálogo remoto viajan a través de Internet pública. Para mejorar la seguridad y el cumplimiento, proporcionar un rendimiento predecible y reducir los costos de transferencia de datos, usa una interconexión privada. Esto establece una conexión de red privada y dedicada entre tu Google Cloudnube privada virtual (VPC) y la red de tu proveedor de nube remoto (por ejemplo, AWS).
Puedes aprovisionar y configurar cualquiera de las siguientes opciones de interconexión privada entre tu VPC de Google Cloud y la VPC de tu proveedor de nube remoto (por ejemplo, AWS):
- Cross-Cloud Interconnect dedicado: Es una conexión física dedicada.
- Interconexión de socio de Cross-Cloud Interconnect: Es una conexión a través de un proveedor de servicios admitido.
Establece sesiones de BGP entre tu Cloud Router en Google Cloud y la VPC de tu proveedor de servicios en la nube remoto para garantizar el intercambio de rutas.
Para habilitar las consultas privadas, debes configurar una ruta desde el Lakehouse hasta tu bucket de almacenamiento remoto (por ejemplo, un bucket de Amazon S3 de AWS) a través de tu interconexión privada. Existen dos flujos arquitectónicos que puedes seguir para configurar este enrutamiento:
- Enrutamiento del balanceador de cargas de red del proxy interno regional: Este flujo usa un balanceador de cargas de red del proxy interno regionalGoogle Cloud para distribuir las solicitudes entre los grupos de extremos de red (NEG) de conectividad híbrida que apuntan a varias interfaces de red elásticas (ENI) de AWS. Este flujo es esencial para el balanceo de cargas, la escalabilidad y la alta disponibilidad. Es obligatorio para la CCI de socio y se recomienda para la CCI dedicada para el balanceo de cargas, la escalabilidad y la alta disponibilidad.
- Enrutamiento directo de extremos: Este flujo conecta el Directorio de servicios directamente a una sola dirección IP del extremo de VPC de interfaz de AWS. Este flujo solo funciona para la CCI dedicada y no se admite para la CCI del socio.
Selecciona el flujo de configuración que coincida con tus requisitos de arquitectura:
Balanceador de cargas de red del proxy interno regional
Para configurar un balanceador de cargas de red de proxy interno regional para distribuir solicitudes en varias ENI de AWS para lograr alta disponibilidad y balanceo de cargas, sigue estos pasos:
Configura las redes de AWS
Primero, crea un extremo de interfaz de VPC de Amazon S3 (AWS PrivateLink):
- En la consola de VPC de AWS, crea un extremo de interfaz para Amazon S3.
- Para el nombre del servicio, especifica
com.amazonaws.AWS_REGION.s3. - Selecciona la VPC y las subredes que están conectadas a tu Google Cloud VPC a través de Direct Connect.
- Vincula grupos de seguridad al extremo para controlar el acceso entrante.
- Esto aprovisiona interfaces de red elásticas (ENI) en cada subred seleccionada. Anota las direcciones IP privadas de estas ENI.
A continuación, configura los grupos de seguridad:
- Asegúrate de que los grupos de seguridad adjuntos a las ENI del extremo de Amazon S3 permitan el tráfico de TCP entrante en el puerto
443desde tu VPC de Google Cloud . Esto debe incluir el rango de CIDR de tu subred de solo proxyGoogle Cloud para permitir las verificaciones de estado y el tráfico reenviado.
Configurar Google Cloud redes
Para simplificar la configuración, ejecuta los siguientes comandos para configurar el balanceador de cargas interno. Para obtener más detalles o configuraciones avanzadas, consulta Configura un balanceador de cargas de red de proxy interno regional para extremos híbridos.
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK \ --range=PROXY_SUBNET_RANGE
Reemplaza lo siguiente:
PROXY_SUBNET_NAME: Es un nombre para la subred de solo proxy.PROXY_SUBNET_RANGE: Un rango CIDR sin usar dentro de tu red de VPC (por ejemplo,10.129.0.0/23).
Crea una verificación de estado regional:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --region=REGION \ --port=443
Reemplaza lo siguiente:
HEALTH_CHECK_NAME: Es un nombre para la verificación de estado.REGION: La Google Cloud región (por ejemplo,us-east4).
Crea grupos de extremos de red (NEG) de conectividad híbrida y agrega extremos:
Crea un NEG híbrido (
NON_GCP_PRIVATE_IP_PORT) para cada zona:gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ZONE \ --network=VPC_NETWORK
Agrega la dirección IP privada de tu ENI de AWS al NEG híbrido correspondiente:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_IP,port=443"
Reemplaza lo siguiente:
NEG_NAME: Es un nombre para el NEG híbrido.ZONE: Es la zona Google Cloud (por ejemplo,us-east4-a). Esta zona debe residir dentro de la región de tu adjunto de VLAN de Cross‑Cloud Interconnect.VPC_NETWORK: Es el nombre de tu red de VPC.AWS_S3_IP: Es la dirección IP privada del extremo de VPC de Amazon S3 de AWS (ENI) en esa zona.
Repite estos comandos para crear NEG y agregar extremos para otras zonas si tus ENI de AWS se distribuyen en varias zonas.
Crea y configura el servicio de backend:
Crea un servicio de backend regional con balanceo de cargas administrado interno:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
Agrega tus NEG híbridos al servicio de backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-zone=ZONE \ --balancing-mode=CONNECTION \ --max-connections=MAX_CONNECTIONS
Reemplaza lo siguiente:
BACKEND_SERVICE_NAME: Es un nombre para el servicio de backend.NEG_NAME: Es el nombre del NEG híbrido que creaste en el paso anterior.ZONE: La Google Cloud zona (por ejemplo,us-east4-a).MAX_CONNECTIONS: Es la cantidad máxima de conexiones simultáneas que debe controlar el backend (por ejemplo,100).
Repite el comando
add-backendpara cada NEG híbrido que creaste.Configura el frontend del balanceador de cargas:
Crea un proxy TCP de destino:
gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --region=REGION
Crea una regla de reenvío para enrutar el tráfico al proxy de destino:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=VPC_NETWORK \ --subnet=VPC_SUBNET \ --ports=443 \ --region=REGION \ --target-tcp-proxy=TARGET_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --allow-global-access
Reemplaza lo siguiente:
TARGET_PROXY_NAME: Es un nombre para el proxy de destino.FORWARDING_RULE_NAME: un nombre para la regla de reenvío.VPC_SUBNET: Es el nombre de tu subred de VPC.
Después de crear la regla de reenvío para el balanceador de cargas, toma nota de la dirección IP interna que se le asignó. Este es tu ILB_IP_ADDRESS.
Configura el Directorio de servicios
Registra la dirección IP del ILB en Directorio de servicios para que Lakehouse pueda detectarla.
Crea un espacio de nombres para tu nube remota:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Reemplaza lo siguiente:
NAMESPACE: Es un identificador único para tu espacio de nombres.PROJECT_ID: Es el ID del proyecto de Google Cloud .REGION: La Google Cloud región Por ejemplo:us-east4. Debe ser la misma región que la del catálogo federado.
Crea un servicio en el espacio de nombres del Directorio de servicios:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Reemplaza lo siguiente:
SERVICE_NAME: Es un identificador único para tu servicio.
Crea un extremo para el ILB en el servicio:
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --namespace=NAMESPACE \ --service=SERVICE_NAME \ --location=REGION \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \ --address=ILB_IP_ADDRESS \ --port=443
Reemplaza lo siguiente:
ENDPOINT_NAME: Es un identificador único para tu extremo.PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud. Usa el número de tu proyecto en la marca--network.ILB_IP_ADDRESS: Es la dirección IP interna de tu regla de reenvío del ILB.
Extremo directo
Para configurar el Directorio de servicios de modo que enrute el tráfico directamente a una sola dirección IP del extremo de VPC de la interfaz de AWS, sigue estos pasos:
- Crea un extremo de VPC de interfaz para Amazon S3 dentro de tu VPC de AWS. Anota la dirección IP y el puerto de este extremo.
Crea un espacio de nombres para tu nube remota:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Reemplaza lo siguiente:
NAMESPACE: Es un identificador único para tu espacio de nombres.PROJECT_ID: Es el ID del proyecto de Google Cloud .REGION: La Google Cloud región Por ejemplo:us-east4. Debe ser la misma región que la del catálogo federado.
Crea un servicio en el espacio de nombres del Directorio de servicios:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Reemplaza lo siguiente:
SERVICE_NAME: Es un identificador único para tu servicio.
Crea un extremo en el servicio que contenga la información de enrutamiento para tu extremo de VPC de interfaz de Amazon S3:
gcloud service-directory endpoints create ENDPOINT_NAME \ --service=SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION \ --address=S3_VPCE_IP_ADDRESS \ --port=S3_VPCE_PORT \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK
Reemplaza lo siguiente:
ENDPOINT_NAME: Es un identificador único para tu extremo.S3_VPCE_IP_ADDRESS: La dirección IP de tu extremo de VPC de la interfaz de Amazon S3. Por ejemplo,10.0.1.45S3_VPCE_PORT: Es el número de puerto de tu extremo de VPC de la interfaz de Amazon S3. Por ejemplo,443PROJECT_NUMBER: Es el número de tu proyecto de Google Cloud. Usa el número de tu proyecto en la marca--network.VPC_NETWORK: Es el nombre de la red de VPC Google Cloud asociada con tu interconexión privada.
Configura la federación
Para consultar tus datos, debes configurar un catálogo federado de Lakehouse que se conecte a tu catálogo remoto de Snowflake Horizon.
Configura la autenticación
La federación requiere credenciales o configuración de roles para acceder al catálogo remoto de Snowflake Horizon. Elige uno de los siguientes métodos.
Basada en secretos (PAT)
Esta opción usa un token de acceso programático (PAT) almacenado de forma segura con secretos regionales de Secret Manager.
Genera un token de acceso programático (PAT) que tenga acceso de lectura al catálogo de destino.
Crea un archivo JSON llamado
credentials.jsoncon tu carga útil:{ "client_secret": "SNOWFLAKE_PAT_TOKEN", "scope": "session:role:SNOWFLAKE_ROLE" }
Reemplaza lo siguiente:
SNOWFLAKE_PAT_TOKEN: Tu token de acceso programático (PAT) de Snowflake.SNOWFLAKE_ROLE: Es el rol específico de Snowflake que se requiere para la sesión. Por ejemplo,ICEBERG_VIEW
Configura el extremo regional para Secret Manager:
De forma predeterminada, Secret Manager usa un extremo global. Sin embargo, Lakehouse requiere que tus secretos se almacenen en la misma región que tu catálogo de Lakehouse. Para interactuar con los secretos regionales usando la CLI de
gcloud, debes anular el extremo de API predeterminado para tu sesión o perfil actual. Para evitar problemas de conectividad, tu secreto y tu catálogo deben crearse en la misma región.gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
Reemplaza lo siguiente:
REGION: Es la región del Google Cloud en la que se almacena tu secreto de Secret Manager. Por ejemplo,us-east4. Para evitar problemas de conectividad, tu secreto y tu catálogo deben crearse en la misma región.
Sube la carga útil a Secret Manager:
gcloud secrets create SNOWFLAKE_SECRET_NAME \ --location="REGION" \ --project="PROJECT_ID" \ --data-file=credentials.json
Reemplaza lo siguiente:
SNOWFLAKE_SECRET_NAME: Nombre del secreto de Snowflake.PROJECT_ID: Es el ID del proyecto de Google Cloud .
Federación de identidades para cargas de trabajo
La federación de identidades para cargas de trabajo (WIF) evita el uso de secretos de larga duración vinculando una cuenta de servicio del catálogo de Lakehouse directamente a un usuario de servicio de Snowflake. No se requiere ninguna configuración previa. Continúa con la creación del catálogo federado.
Crea un catálogo federado
Crea el catálogo federado con la consola de Google Cloud o la CLI de gcloud.
Console
Para crear un catálogo federado, haz lo siguiente:
En la consola de Google Cloud , ve a Lakehouse.
Haz clic en Crear catálogo.
Haz clic en Catálogo federado.
Aparecerán los detalles de la Configuración del catálogo.
En Fuente de catálogo federado, selecciona Snowflake (Horizon).
En Ubicación de los datos, selecciona la región de Lakehouse en la que deseas crear el catálogo federado. Por ejemplo,
us-east4Para minimizar la latencia (incluso a través de Internet pública), haz lo siguiente cuando selecciones una región:- Si tu catálogo de Snowflake Horizon está en AWS, selecciona laGoogle Cloud región más cercana a tu región de AWS.
- Si tu catálogo de Snowflake Horizon está activado Google Cloud, selecciona la misma región.
Haz clic en Continuar.
Aparecerán los detalles de Detalles de la conexión.
En la sección Detalles del catálogo remoto, en el campo Identificador de cuenta de Snowflake, ingresa tu identificador de cuenta de Snowflake. Por ejemplo:
my_org-my_account.En el campo Almacén de Snowflake, ingresa el nombre de tu almacén de Snowflake. También se conoce como el nombre de la base de datos en el catálogo de Snowflake Horizon.
Selecciona una opción para Authentication Method:
- En Secreto, ingresa el nombre de tu secreto para Basado en secreto (PAT). Usa el siguiente formato:
projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME. - En OIDC, ingresa tu rol de Snowflake para la federación de identidades para cargas de trabajo. Por ejemplo:
ICEBERG_VIEW.
- En Secreto, ingresa el nombre de tu secreto para Basado en secreto (PAT). Usa el siguiente formato:
Opcional: En el campo Nombre del directorio de servicios, ingresa la ruta de acceso a tu servicio del Directorio de servicios. Por ejemplo:
projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME. Esto solo es necesario si configuras una interconexión privada (Cross‑Cloud Interconnect).Haz clic en Crear.
gcloud CLI
Basado en Secret (PAT)
Internet pública (sin CCI)
Si no configuras la CCI, la conexión viajará de forma segura a través de la Internet pública.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="snowflake" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME" \ --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \ --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .REGION: Es la región del Lakehouse en la que se crea el catálogo federado. Por ejemplo,us-east4Para minimizar la latencia, selecciona la región de Google Cloud más cercana a tu región de Snowflake.SNOWFLAKE_SECRET_NAME: Es el nombre de tu secreto de Snowflake.SNOWFLAKE_ACCOUNT_IDENTIFIER: Es el identificador de tu cuenta de Snowflake (por ejemplo,my_org-my_account).SNOWFLAKE_WAREHOUSE: Es el almacén de Snowflake con el que deseas federar. También se conoce como el nombre de la base de datos en el catálogo de Snowflake Horizon.REFRESH_INTERVAL: Opcional: Especifica con qué frecuencia se actualizará la información del catálogo. Establece este valor como una duración, por ejemplo,330so5m30s. El valor debe ser0s(inhabilitado) o, al menos,300s(5m). Las duraciones inferiores a300sgeneran un error. Los intervalos más cortos actualizan los datos con mayor frecuencia, pero pueden costar más en llamadas a la API. Los intervalos más largos pueden costar menos, pero es posible que los datos consultados no reflejen tu conjunto de datos más actual. Si se omite o si el valor se establece en0s, no se iniciará la actualización de metadatos en segundo plano. Permanecerá inhabilitado hasta que el intervalo de actualización se actualice a un valor positivo válido.NAMESPACE_FILTERS: Opcional: Es una lista separada por comas de los espacios de nombres que se federarán. Por ejemplo,ns1,ns2Si se omite, se incluirán todos los espacios de nombres.
Propiedad del cliente (CCI)
Si configuraste una interconexión privada (como CCI dedicada o CCI de socio), proporciona la referencia del servicio de Directorio de servicios para que Lakehouse enrute el tráfico de forma privada.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="snowflake" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME" \ --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \ --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .REGION: Es la región del Lakehouse en la que se crea el catálogo federado. Nota: Debe ser la misma región que el espacio de nombres del Directorio de servicios y el secreto regional.SNOWFLAKE_SECRET_NAME: Es el nombre de tu secreto de Snowflake.SNOWFLAKE_ACCOUNT_IDENTIFIER: Es el identificador de tu cuenta de Snowflake.SNOWFLAKE_WAREHOUSE: Es el almacén de Snowflake con el que deseas federar. También se conoce como el nombre de la base de datos en el catálogo de Snowflake Horizon.REFRESH_INTERVAL: Opcional: Especifica con qué frecuencia se actualizará la información del catálogo. Establece este valor como una duración, por ejemplo,330so5m30s. El valor debe ser0s(inhabilitado) o, al menos,300s(5m). Las duraciones inferiores a300sgeneran un error. Los intervalos más cortos actualizan los datos con mayor frecuencia, pero pueden costar más en llamadas a la API. Los intervalos más largos pueden costar menos, pero es posible que los datos consultados no reflejen tu conjunto de datos más actual. Si se omite o si el valor se establece en0s, no se iniciará la actualización de metadatos en segundo plano. Permanecerá inhabilitado hasta que el intervalo de actualización se actualice a un valor positivo válido.NAMESPACE_FILTERS: Opcional: Es una lista separada por comas de los espacios de nombres que se federarán. Por ejemplo,ns1,ns2Si se omite, se incluirán todos los espacios de nombres.NAMESPACE: Es el espacio de nombres del Directorio de servicios que creaste durante la configuración de la interconexión privada.SERVICE_NAME: Es el nombre del servicio de Directorio de servicios que creaste durante la configuración de Interconnect privado.
Federación de identidades para cargas de trabajo
Internet pública (sin CCI)
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="snowflake" \ --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \ --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \ --snowflake-role="SNOWFLAKE_ROLE" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS"
Propiedad del cliente (CCI)
Si configuraste una interconexión privada (como CCI dedicada o CCI de socio), proporciona la referencia del servicio de Directorio de servicios para que Lakehouse enrute el tráfico de forma privada.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="snowflake" \ --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \ --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \ --snowflake-role="SNOWFLAKE_ROLE" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"
Reemplaza lo siguiente:
PROJECT_ID: Es el ID del proyecto de Google Cloud .SNOWFLAKE_ACCOUNT_IDENTIFIER: Es el identificador de tu cuenta de Snowflake.SNOWFLAKE_WAREHOUSE: Es el almacén de Snowflake con el que deseas federar. También se conoce como el nombre de la base de datos en el catálogo de Snowflake Horizon.SNOWFLAKE_ROLE: Es el rol específico de Snowflake que se requiere para la sesión. Por ejemplo,ICEBERG_VIEWFEDERATED_CATALOG_NAME: Es el nombre del catálogo federado de Lakehouse.REGION: Es la región del Lakehouse en la que se crea el catálogo federado.REFRESH_INTERVAL: Opcional: Especifica con qué frecuencia se actualizará la información del catálogo. Establece este valor como una duración, por ejemplo,330so5m30s. El valor debe ser0s(inhabilitado) o, al menos,300s(5m). Las duraciones inferiores a300sgeneran un error. Los intervalos más cortos actualizan los datos con mayor frecuencia, pero pueden costar más en llamadas a la API. Los intervalos más largos pueden costar menos, pero es posible que los datos consultados no reflejen tu conjunto de datos más actual. Si se omite o si el valor se establece en0s, no se iniciará la actualización de metadatos en segundo plano. Permanecerá inhabilitado hasta que el intervalo de actualización se actualice a un valor positivo válido.NAMESPACE_FILTERS: Opcional: Es una lista separada por comas de los espacios de nombres que se federarán. Por ejemplo,ns1,ns2Si se omite, se incluirán todos los espacios de nombres.NAMESPACE: Es el espacio de nombres de tu servicio de Directorio de servicios.SERVICE_NAME: Es el nombre de tu servicio de Directorio de servicios.
Completa la configuración de la autenticación
Completa el proceso de autenticación con el tipo de autenticación que elegiste.
Basada en secretos (PAT)
Cuando se crea el catálogo, Lakehouse aprovisiona una cuenta de servicio única para él (se muestra como biglake-service-account en la descripción del recurso).
Debes otorgar permiso a esta cuenta de servicio para acceder al secreto que creaste anteriormente. Ten en cuenta que la propagación de las políticas de IAM puede tardar unos minutos.
Otorga permiso a la cuenta de servicio del catálogo para acceder al secreto:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets add-iam-policy-binding SNOWFLAKE_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION" \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/secretmanager.secretAccessor"
Para verificar que la cuenta de servicio del catálogo federado tenga acceso al secreto, ejecuta el siguiente comando:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets get-iam-policy SNOWFLAKE_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION"
En el resultado, verifica que la cuenta de servicio biglake-service-account tenga asignado el rol roles/secretmanager.secretAccessor.
Federación de identidades para cargas de trabajo
Después de crear el catálogo, debes vincular la identidad de su cuenta de servicio a un usuario de servicio en Snowflake.
Extrae el ID de la cuenta de servicio de Lakehouse (sujeto) de los detalles del catálogo.
Puedes obtenerlo de la respuesta JSON del comando de creación (campo
biglake-service-account-id).Como alternativa, puedes ejecutar el comando describe en el catálogo para obtener el valor:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Busca
biglake-service-account-iden el resultado.Accede a tu instancia de administración de Snowflake y ejecuta la siguiente secuencia de comandos para establecer la relación de confianza con la identidad del servicio de Lakehouse:
USE ROLE ACCOUNTADMIN; CREATE USER SNOWFLAKE_SERVICE_USER TYPE = SERVICE WORKLOAD_IDENTITY = ( TYPE = GCP SUBJECT = 'LAKEHOUSE_SERVICE_ACCOUNT_ID' ) DEFAULT_ROLE = SNOWFLAKE_ROLE COMMENT = 'Service user for Lakehouse federation over WIF'; -- Also explicitly GRANT permissions to the role GRANT ROLE SNOWFLAKE_ROLE TO USER SNOWFLAKE_SERVICE_USER;
Reemplaza lo siguiente:
SNOWFLAKE_SERVICE_USER: Es un nombre para el nuevo usuario de servicio en Snowflake.LAKEHOUSE_SERVICE_ACCOUNT_ID: Es el ID de la cuenta de servicio que se extrajo en el paso anterior.SNOWFLAKE_ROLE: Rol de Snowflake (debe coincidir con el rol especificado durante la creación del catálogo).
Completa la configuración de la interconexión privada (solo para Cross‑Cloud Interconnect)
Si enrutas el tráfico a través de una interconexión privada (CCI dedicada o de socio), debes otorgar permisos a la cuenta de servicio del catálogo de Lakehouse para descubrir y autorizar conexiones a través de Directorio de servicios.
Console
En la consola de Google Cloud , dirígete a la página IAM.
Haz clic en Otorgar acceso (o Agregar).
En el campo Principales nuevas, ingresa el correo electrónico de la cuenta de servicio del catálogo de Lakehouse. Puedes recuperar este correo electrónico describiendo el catálogo (consulta la pestaña
gcloud).En el menú desplegable Rol, selecciona Visualizador de Service Directory (
roles/servicedirectory.viewer).Haz clic en Agregar otro rol y selecciona Servicio autorizado por PSC de Service Directory (
roles/servicedirectory.pscAuthorizedService).Haz clic en Guardar.
gcloud CLI
Otorga los roles necesarios a la cuenta de servicio del catálogo:
# Grant Service Directory Viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.viewer" # Grant Service Directory PSC Authorized Service gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.pscAuthorizedService"
Verifica la conexión
Verifica que el ciclo de actualización de metadatos en segundo plano del catálogo se haya completado correctamente y que los espacios de nombres y las tablas estén sincronizados.
Verifica que el estado de actualización indique que se realizó correctamente:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Confirma que los espacios de nombres estén sincronizados:
gcloud alpha biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
Confirma que las tablas de un espacio de nombres estén sincronizadas:
gcloud alpha biglake iceberg tables list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME" \ --namespace="NAMESPACE_ID"