En este documento, se describe cómo configurar un Lakehouse sin límites para consultar datos de un catálogo de AWS Glue directamente en Google Cloud. Esta capacidad unifica tu análisis de datos integrando tus fuentes de datos externas con tu Google Cloud entorno existente.
Luego, puedes usar Lakehouse para Apache Iceberg 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 de Lakehouse sin bordes para comprender cómo funciona.
- Revisa los catálogos compatibles para verificar los requisitos de formato de la tabla y las configuraciones admitidas.
- Asegúrate de que tu administrador de AWS tenga permisos para crear roles de Identity and Access Management (IAM) y configurar políticas de permisos.
- 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 API.
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 API.
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 un Lakehouse sin bordes, 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) -
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.
Limitaciones y consideraciones
En esta sección, se enumeran las limitaciones y consideraciones para usar Lakehouse sin bordes.
- Proveedores de servicios en la nube admitidos: Se admite el uso de una interconexión privada con tu Lakehouse sin bordes 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.
- 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-intervaldel catálogo federado determina la frecuencia con la que se sincronizan los metadatos. Un intervalo más corto proporciona datos más recientes, pero puede generar costos adicionales de la API del proveedor del catálogo remoto. - Informes de métricas de Iceberg:
Los Informes de métricas de Iceberg no están disponibles para los
catálogos federados. Establece la propiedad
rest-metrics-reporting-enabledenfalseen tu cliente de Iceberg cuando accedas a un catálogo federado.
Flujo de trabajo general
Para configurar y usar Lakehouse sin límites, 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 creando un rol de IAM con una política de confianza de marcador de posición con tu proveedor remoto. Luego, crea un catálogo federado en Lakehouse y actualiza la política de confianza.
- Verifica la conexión: Asegúrate de 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 usar Lakehouse sin bordes.
- 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, configura un catálogo federado de Lakehouse que se conecte a tu catálogo remoto de AWS.
Crea el rol de IAM de AWS con una política de confianza de marcador de posición
Lakehouse aprovisiona un ID de cuenta de servicio de Google después de la creación del catálogo. Crea el rol de IAM de AWS con una política de confianza de marcador de posición.
Crea un archivo llamado
trust_policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": [ "PLACEHOLDER_VALUE" ], "accounts.google.com:sub": [ "PLACEHOLDER_VALUE" ] } } } ] }
Ejecuta el comando de la CLI de AWS para crear el rol con la política de confianza del marcador de posición. Recomendamos establecer la duración máxima de la sesión en 12 horas (
43200segundos) para evitar que venzan las credenciales durante los trabajos de larga duración:aws iam create-role \ --role-name AWS_ROLE_NAME \ --assume-role-policy-document file://trust_policy.json \ --max-session-duration 43200
Reemplaza lo siguiente:
AWS_ROLE_NAME: Es el nombre de tu rol de IAM de AWS. Por ejemplo,lakehouse_glue_federation_role.
Cómo adjuntar una política de permisos
Adjunta una política de permisos a tu rol de IAM que permita que Lakehouse acceda al catálogo de datos de Glue y a los buckets de S3 de la región de AWS. Esta política también otorga acceso a los buckets de tablas de S3 si usas la integración de tablas de S3 de AWS Lake Formation. Si actualizaste los permisos de datos predeterminados de AWS Glue al modelo de AWS Lake Formation, es posible que debas otorgar permisos adicionales en Lake Formation.
Crea un archivo llamado
permissions_policy.jsoncon la siguiente configuración de política.{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueRead", "Effect": "Allow", "Action": [ "glue:GetCatalog", "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables" ], "Resource": "arn:aws:glue:AWS_REGION:AWS_ACCOUNT_ID:*" }, { "Sid": "S3Read", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "S3TablesRead", "Effect": "Allow", "Action": [ "s3tables:GetTableBucket", "s3tables:ListNamespaces", "s3tables:GetNamespace", "s3tables:ListTables", "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableData" ], "Resource": [ "arn:aws:s3tables:AWS_REGION:AWS_ACCOUNT_ID:*" ] } ] }
Si usas claves administradas por el cliente alojadas en AWS Key Management Service (KMS) para encriptar recursos de AWS Glue, Amazon S3 o tablas de Amazon S3, debes agregar una instrucción que otorgue acceso a la clave de KMS para desencriptar los recursos:
# ... { "Sid": "GlueS3S3TablesKmsDecrypt", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:AWS_REGION:AWS_ACCOUNT_ID:key/key_id_for_glue", "arn:aws:kms:AWS_REGION:AWS_ACCOUNT_ID:key/key_id_for_s3", "arn:aws:kms:AWS_REGION:AWS_ACCOUNT_ID:key/key_id_for_s3_tables" ] } # ...
Adjunta esta política de permisos a tu rol de IAM:
aws iam put-role-policy \ --role-name AWS_ROLE_NAME \ --policy-name AWS_POLICY_NAME \ --policy-document file://permissions_policy.json
Reemplaza lo siguiente:
AWS_ROLE_NAME: Es el nombre de tu rol de IAM de AWS. Por ejemplo,lakehouse_glue_federation_role.AWS_POLICY_NAME: Es un nombre para tu política de permisos. Por ejemplo,lakehouse_glue_federation_policyAWS_REGION: Es la región de AWS en la que residen tu catálogo de Glue o tus tablas de S3. Por ejemplo,us-east-1AWS_ACCOUNT_ID: Es tu cadena de ID de cuenta de AWS de 12 dígitos. Por ejemplo,123456789012
Crea un catálogo federado
Establece el catálogo federado en Google Cloud con la consola de Google Cloud , la CLI de gcloud o la API de REST.
Para evitar fallas prematuras en la actualización de metadatos en segundo plano mientras se propagan las relaciones de confianza de AWS, inicializa el catálogo sin especificar un programa de actualización (que se establece de forma predeterminada en 0s).
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 Federated catalog source, selecciona AWS Glue.
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), selecciona la región Google Cloud más cercana a tu región de AWS.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 Almacén de AWS, ingresa tu ID de cuenta de AWS o el catálogo del bucket de la tabla de S3. Por ejemplo:
123456789012.En el campo Región de AWS, ingresa tu región de AWS. Por ejemplo:
us-east-1.En el campo ARN de rol de AWS, ingresa tu ARN de rol de AWS. Usa el siguiente formato:
arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME.Opcional: En el campo Nombre del directorio de servicios, ingresa la ruta de acceso a tu extremo o servicio del Directorio de servicios. Esto solo es necesario si configuras una interconexión privada (Cross‑Cloud Interconnect).
Haz clic en Crear.
Google Cloud CLI
Internet pública (sin CCI)
Si no configuras la CCI, la conexión viajará de forma segura a través de Internet pública.
gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="glue" \ --glue-warehouse="GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE" \ --glue-aws-region="AWS_REGION" \ --glue-aws-role-arn="arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME"
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 asegurarte de 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="glue" \ --glue-warehouse="GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE" \ --glue-aws-region="AWS_REGION" \ --glue-aws-role-arn="arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE_NAME"
REST
curl -s -X POST \ -H "x-goog-user-project: PROJECT_ID" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://biglake.googleapis.com/iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs?iceberg_catalog_id=FEDERATED_CATALOG_NAME&primary_location=REGION" \ -d '{ "catalog_type": "CATALOG_TYPE_FEDERATED", "storage_regions": ["'"REGION"'"], "federated_catalog_options": { "glue_catalog_info": { "warehouse": "'"GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE"'", "aws_region": "'"AWS_REGION"'", "aws_role_arn": "arn:aws:iam::'"AWS_ACCOUNT_ID"':role/'"AWS_ROLE_NAME"'" } } }'
Reemplaza lo siguiente:
FEDERATED_CATALOG_NAME: Es un nombre para tu catálogo federado.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-east4GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE: Es el identificador del catálogo del almacén de destino. Para el Data Catalog de Glue de una región de AWS, ingresa tu cadena de ID de cuenta de AWS de 12 dígitos. Por ejemplo,123456789012. Para usar un bucket de tabla de S3 en la región, ingresaAWS_ACCOUNT_ID:s3tablescatalog/S3_TABLE_BUCKET. Por ejemplo,123456789012:s3tablescatalog/my-table-bucket.AWS_ACCOUNT_ID: Es tu cadena de ID de cuenta de AWS de 12 dígitos. Por ejemplo,123456789012AWS_REGION: Es la región de AWS en la que reside tu catálogo de Glue o bucket de tabla de S3. Por ejemplo,us-east-1AWS_ROLE_NAME: Es el nombre de tu rol de IAM de AWS. Por ejemplo,lakehouse_glue_federation_roleNAMESPACE: (Opcional) Es el espacio de nombres del Directorio de servicios que creaste durante la configuración de la interconexión privada.SERVICE_NAME: (Opcional) Es el nombre del servicio del Directorio de servicios que creaste durante la configuración de la interconexión privada.
Actualiza la política de confianza
Cuando se crea el catálogo, Lakehouse aprovisiona una cuenta de servicio única para él, que se devuelve como el campo biglake-service-account-id en la respuesta de creación del catálogo. Usarás esta cuenta de servicio para establecer la relación de confianza.
Ejecuta el siguiente comando para extraer el valor de
biglake-service-account-iden una variable bash activa:LAKEHOUSE_SA_ID=$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format="value(biglake-service-account-id)")
Actualiza la política de confianza de tu rol de IAM de AWS para reemplazar el marcador de posición por tu ID verificado del agente de servicio de Google. El bloque de condición valida la coincidencia de
subyaud. Escribe la política en un archivo llamadotrust_policy_comprehensive.json:cat > trust_policy_comprehensive.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": [ "$LAKEHOUSE_SA_ID" ], "accounts.google.com:sub": [ "$LAKEHOUSE_SA_ID" ] } } } ] } EOF
Aplica la política finalizada a tu rol de AWS:
aws iam update-assume-role-policy \ --role-name AWS_ROLE_NAME \ --policy-document file://trust_policy_comprehensive.json
Habilita la actualización de metadatos en segundo plano
Ahora que se establecieron correctamente las relaciones de confianza seguras en ambas plataformas, actualiza tu catálogo para activar la actualización de metadatos en segundo plano (cada 5 minutos o 300s, o más).
gcloud CLI
gcloud alpha biglake iceberg catalogs update FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --refresh-interval="300s"
REST
curl -s -X PATCH \ -H "x-goog-user-project: PROJECT_ID" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://biglake.googleapis.com/iceberg/v1/restcatalog/extensions/projects/PROJECT_ID/catalogs/FEDERATED_CATALOG_NAME?updateMask=federated_catalog_options.refresh_options.refresh_schedule" \ -d '{ "federated_catalog_options": { "refresh_options": { "refresh_schedule": { "refresh_interval": "300s" } } } }'
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 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 las bases de datos remotas aparezcan como espacios de nombres sincronizados:
gcloud alpha biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
¿Qué sigue?
- Usa Lakehouse sin fronteras y consulta tablas.
- Soluciona problemas relacionados con Lakehouse sin bordes.