Borderless Lakehouse für AWS Glue einrichten

In diesem Dokument wird beschrieben, wie Sie ein grenzenloses Lakehouse einrichten, um Daten aus einem AWS Glue-Katalog direkt in Google Cloudabzufragen. Mit dieser Funktion können Sie Ihre Datenanalyse vereinheitlichen, indem Sie Ihre externen Datenquellen in Ihre bestehende Google Cloud Umgebung einbinden.

Anschließend können Sie Lakehouse for Apache Iceberg verwenden, um den Zugriff auf Ihre föderierten Daten zu verwalten.

Hinweis

  1. Lesen Sie sich den Lakehouse-Überblick durch, um zu verstehen, wie der Zugriff auf Daten in Lakehouse verwaltet wird.
  2. Informationen zum grenzenlosen Lakehouse
  3. Sehen Sie sich die unterstützten Katalogs an, um die Anforderungen an das Tabellenformat und die unterstützten Konfigurationen zu prüfen.
  4. Ihr AWS-Administrator muss Berechtigungen zum Erstellen von IAM-Rollen (Identity and Access Management) und zum Konfigurieren von Berechtigungsrichtlinien haben.
  5. Optional: Wenn Sie Anfragen über eine private Interconnect-Verbindung zwischen Ihrer Google Cloud VPC und der VPC Ihres Remote-Cloud-Anbieters (z. B. AWS) weiterleiten möchten, müssen Sie ein aktives Konto bei Ihrem Remote-Anbieter haben, eine Dedicated Cross-Cloud Interconnect- oder Partner Cross-Cloud Interconnect-Verbindung bereitstellen, BGP-Sitzungen mit Ihrem Cloud Router einrichten und prüfen, ob Sie in beiden Cloud-Umgebungen die erforderlichen IAM-Berechtigungen haben.
  6. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the BigLake API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the BigLake API.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. 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.

    Enable the API

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Projekt zuzuweisen, damit Sie die nötigen Berechtigungen für die Einrichtung eines grenzenlosen Lakehouse haben:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Einschränkungen und Überlegungen

In diesem Abschnitt werden die Einschränkungen und Überlegungen für die Verwendung von Borderless Lakehouse aufgeführt.

  • Unterstützte Cloud-Anbieter:Die Verwendung einer privaten Interconnect-Verbindung mit Ihrem grenzenlosen Lakehouse wird bei den folgenden Remote-Cloud-Anbietern unterstützt: Amazon Web Services (AWS). Sie können entweder Dedicated Cross-Cloud Interconnect oder Partner Cross-Cloud Interconnect verwenden.
  • Netzwerkrouting:Wenn keine private Interconnect-Verbindung (z. B. Dedicated CCI oder Partner CCI) konfiguriert ist, werden Anfragen über das öffentliche Internet weitergeleitet. Dies kann zu höheren Gebühren für ausgehenden Traffic von Ihrem Remote-Cloud-Anbieter und einer weniger vorhersehbaren Leistung führen.
  • Datenaktualität:Das --refresh-interval-Flag für den föderierten Katalog bestimmt, wie oft Metadaten synchronisiert werden. Ein kürzeres Intervall sorgt für aktuellere Daten, kann aber zusätzliche API-Kosten beim Remote-Kataloganbieter verursachen.
  • Berichterstellung für Iceberg-Messwerte:Die Berichterstellung für Iceberg-Messwerte ist für föderierte Kataloge nicht verfügbar. Legen Sie die Eigenschaft rest-metrics-reporting-enabled in Ihrem Iceberg-Client auf false fest, wenn Sie auf einen föderierten Katalog zugreifen.

Allgemeiner Workflow

So richten Sie Borderless Lakehouse ein und verwenden es:

  • Cross-Cloud Interconnect einrichten (optional): Konfigurieren Sie eine private Verbindung zwischen Ihrer Google Cloud VPC und Ihrem Remote-Cloud-Anbieter.
  • Föderation einrichten:Konfigurieren Sie die Authentifizierung, indem Sie eine IAM-Rolle mit einer Platzhalter-Vertrauensrichtlinie bei Ihrem Remote-Anbieter erstellen. Erstellen Sie dann einen föderierten Katalog in Lakehouse und aktualisieren Sie die Vertrauensrichtlinie.
  • Verbindung prüfen:Prüfen Sie, ob Lakehouse eine Verbindung zu Ihrem Remote-Katalog herstellen kann.
  • Daten abfragen:Führen Sie mit BigQuery oder Managed Service for Apache Spark Abfragen für Ihre föderierten Daten aus. Weitere Informationen finden Sie unter Borderless Lakehouse verwenden.
  • Berechtigungen konfigurieren:Mit IAM können Sie verwalten, wer die föderierten Daten ansehen und abfragen kann.

Cross-Cloud Interconnect einrichten (optional)

Abfragen an Ihren Remote-Katalog werden standardmäßig über das öffentliche Internet geleitet. Um die Sicherheit und Compliance zu verbessern, eine vorhersehbare Leistung zu erzielen und die Kosten für die Datenübertragung zu senken, sollten Sie eine private Verbindung verwenden. Dadurch wird eine dedizierte private Netzwerkverbindung zwischen Ihrer Google CloudVirtual Private Cloud (VPC) und dem Netzwerk Ihres Remote-Cloud-Anbieters (z. B. AWS) hergestellt.

Sie können eine der folgenden privaten Interconnect-Optionen zwischen Ihrer Google Cloud VPC und der VPC Ihres Remote-Cloudanbieters (z. B. AWS) bereitstellen und konfigurieren:

Richten Sie BGP-Sitzungen zwischen Ihrem Cloud Router in Google Cloud und der VPC Ihres Remote-Cloud-Anbieters ein, um den Routenaustausch zu ermöglichen.

Wenn Sie private Abfragen aktivieren möchten, müssen Sie über Ihre private Verbindung einen Pfad vom Lakehouse zu Ihrem Remote-Speicher-Bucket (z. B. einem AWS Amazon S3-Bucket) konfigurieren. Es gibt zwei Architekturabläufe, die Sie für die Konfiguration dieses Routings verwenden können:

  • Routing mit internem regionalen Proxy-Network-Load-Balancer:Bei diesem Ablauf wird einGoogle Cloud interner regionaler Proxy-Network-Load-Balancer verwendet, um Anfragen auf Hybridkonnektivitäts-NEGs (Network Endpoint Groups) zu verteilen, die auf mehrere AWS Elastic Network Interfaces (ENIs) verweisen. Dieser Ablauf ist für Load Balancing, Skalierbarkeit und Hochverfügbarkeit unerlässlich. Sie ist für Partner-CCIs erforderlich und wird für dedizierte CCIs für Load-Balancing, Skalierbarkeit und Hochverfügbarkeit empfohlen.
  • Direktes Endpunktrouting:Bei diesem Ablauf wird Service Directory direkt mit einer einzelnen IP-Adresse des AWS-Schnittstellen-VPC-Endpunkts verbunden. Dieser Ablauf funktioniert nur für Dedicated CCI und wird nicht für Partner CCI unterstützt.

Wählen Sie den Konfigurationsablauf aus, der Ihren Architekturanforderungen entspricht:

Interner regionaler Proxy-Network Load Balancer

So konfigurieren Sie einen internen regionalen Proxy-Network Load Balancer, um Anfragen für Hochverfügbarkeit und Lastenausgleich auf mehrere AWS-ENIs zu verteilen:

AWS-Netzwerk konfigurieren

Erstellen Sie zuerst einen Amazon S3-VPC-Schnittstellenendpunkt (AWS PrivateLink):

  1. Erstellen Sie in der AWS-VPC-Konsole einen Schnittstellenendpunkt für Amazon S3.
  2. Geben Sie als Dienstname com.amazonaws.AWS_REGION.s3 an.
  3. Wählen Sie die VPC und die Subnetze aus, die über Direct Connect mit Ihrer Google Cloud VPC verbunden sind.
  4. Hängen Sie Sicherheitsgruppen an den Endpunkt an, um den eingehenden Zugriff zu steuern.
  5. Dadurch werden Elastic Network Interfaces (ENIs) in jedem ausgewählten Subnetz bereitgestellt. Notieren Sie sich die privaten IP-Adressen dieser ENIs.

Konfigurieren Sie als Nächstes Sicherheitsgruppen:

  • Achten Sie darauf, dass die Sicherheitsgruppe(n), die an die Amazon S3-Endpunkt-ENIs angehängt sind, eingehenden TCP-Traffic auf Port 443 aus Ihrer Google Cloud VPC zulassen. Dazu muss der CIDR-Bereich IhresGoogle Cloud Nur-Proxy-Subnetzes gehören, damit Systemdiagnosen und weitergeleiteter Traffic zugelassen werden.

Netzwerk Google Cloud konfigurieren

Führen Sie die folgenden Befehle aus, um die Einrichtung zu vereinfachen und den internen Load-Balancer zu konfigurieren. Weitere Informationen finden Sie unter Regionalen internen Proxy-Network Load Balancer für Hybridendpunkte einrichten.

gcloud compute networks subnets create PROXY_SUBNET_NAME \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION \
    --network=VPC_NETWORK \
    --range=PROXY_SUBNET_RANGE

Ersetzen Sie Folgendes:

  • PROXY_SUBNET_NAME: ein Name für das Nur-Proxy-Subnetz.
  • PROXY_SUBNET_RANGE: Ein nicht verwendeter CIDR-Bereich in Ihrem VPC-Netzwerk, z. B. 10.129.0.0/23.
  1. Erstellen Sie eine regionale Systemdiagnose.

    gcloud compute health-checks create tcp HEALTH_CHECK_NAME \
        --region=REGION \
        --port=443

    Ersetzen Sie Folgendes:

    • HEALTH_CHECK_NAME: Ein Name für die Systemdiagnose.
    • REGION: Die Google Cloud Region, z. B. us-east4.
  2. Erstellen Sie Netzwerk-Endpunktgruppen (NEGs) mit Hybridkonnektivität und fügen Sie Endpunkte hinzu:

    Erstellen Sie für jede Zone eine Hybrid-NEG (NON_GCP_PRIVATE_IP_PORT):

    gcloud compute network-endpoint-groups create NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ZONE \
        --network=VPC_NETWORK

    Fügen Sie die private IP-Adresse Ihrer AWS-ENI der entsprechenden Hybrid-NEG hinzu:

    gcloud compute network-endpoint-groups update NEG_NAME \
        --zone=ZONE \
        --add-endpoint="ip=AWS_S3_IP,port=443"

    Ersetzen Sie Folgendes:

    • NEG_NAME: Ein Name für die hybride NEG.
    • ZONE: die Google Cloud Zone (z. B. us-east4-a). Diese Zone muss sich in der Region Ihres Cross-Cloud Interconnect-VLAN-Anhang befinden.
    • VPC_NETWORK: der Name des VPC-Netzwerks
    • AWS_S3_IP: die private IP-Adresse des AWS Amazon S3-VPC-Endpunkts (ENI) in dieser Zone.

    Wiederholen Sie diese Befehle, um NEGs zu erstellen und Endpunkte für andere Zonen hinzuzufügen, wenn Ihre AWS-ENIs auf mehrere Zonen verteilt sind.

  3. Erstellen und konfigurieren Sie den Backend-Dienst:

    So erstellen Sie einen regionalen Backend-Dienst mit intern verwaltetem Load-Balancing:

    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

    Fügen Sie dem Backend-Dienst Ihre hybriden NEGs hinzu:

    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

    Ersetzen Sie Folgendes:

    • BACKEND_SERVICE_NAME: Ein Name für den Backend-Dienst.
    • NEG_NAME: der Name der hybriden NEG, die Sie im vorherigen Schritt erstellt haben.
    • ZONE: Die Google Cloud Zone (z. B. us-east4-a).
    • MAX_CONNECTIONS: Die maximale Anzahl gleichzeitiger Verbindungen, die das Backend verarbeiten soll (z. B. 100).

    Wiederholen Sie den Befehl add-backend für jede Hybrid-NEG, die Sie erstellt haben.

  4. Load-Balancer-Frontend konfigurieren:

    Erstellen Sie einen Ziel-TCP-Proxy:

    gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
        --backend-service=BACKEND_SERVICE_NAME \
        --region=REGION

    Erstellen Sie eine Weiterleitungsregel, um Traffic an den Zielproxy weiterzuleiten:

    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

    Ersetzen Sie Folgendes:

    • TARGET_PROXY_NAME: ein Name für den Zielproxy.
    • FORWARDING_RULE_NAME ist ein Name für die Weiterleitungsregel.
    • VPC_SUBNET: der Name des VPC-Subnetzwerks.

Notieren Sie sich nach dem Erstellen der Weiterleitungsregel für den Load Balancer die ihm zugewiesene interne IP-Adresse. Das ist dein ILB_IP_ADDRESS.

Service Directory konfigurieren

Registrieren Sie die IP-Adresse des internen Lastenausgleichs in Service Directory, damit Lakehouse sie erkennen kann.

  1. Erstellen Sie einen Namespace für Ihre Remote-Cloud:

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Ersetzen Sie Folgendes:

    • NAMESPACE: Eine eindeutige Kennung für Ihren Namespace.
    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • REGION: die Google Cloud Region. Beispiel: us-east4. Diese muss mit der Region des föderierten Katalogs übereinstimmen.
  2. Erstellen Sie einen Dienst im Service Directory-Namespace:

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Eine eindeutige Kennung für Ihren Dienst.
  3. Erstellen Sie einen Endpunkt für den ILB im Dienst:

    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

    Ersetzen Sie Folgendes:

    • ENDPOINT_NAME: Eine eindeutige Kennung für Ihren Endpunkt.
    • PROJECT_NUMBER: Ihre Google CloudProjektnummer. Verwenden Sie Ihre Projektnummer im Flag --network.
    • ILB_IP_ADDRESS: die interne IP-Adresse Ihrer ILB-Weiterleitungsregel.

Direkter Endpunkt

So konfigurieren Sie Service Directory, um Traffic direkt an eine einzelne IP-Adresse eines AWS-Schnittstellen-VPC-Endpunkts weiterzuleiten:

  1. Erstellen Sie einen Interface VPC Endpoint für Amazon S3 in Ihrer AWS-VPC. Notieren Sie sich die IP-Adresse und den Port dieses Endpunkts.
  2. Erstellen Sie einen Namespace für Ihre Remote-Cloud:

    gcloud service-directory namespaces create NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Ersetzen Sie Folgendes:

    • NAMESPACE: Eine eindeutige Kennung für Ihren Namespace.
    • PROJECT_ID: Ihre Google Cloud Projekt-ID.
    • REGION: die Google Cloud Region. Beispiel: us-east4. Diese muss mit der Region des föderierten Katalogs übereinstimmen.
  3. Erstellen Sie einen Dienst im Service Directory-Namespace:

    gcloud service-directory services create SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: Eine eindeutige Kennung für Ihren Dienst.
  4. Erstellen Sie einen Endpunkt im Dienst, der die Routinginformationen für Ihren Amazon S3-Schnittstellen-VPC-Endpunkt enthält:

    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

    Ersetzen Sie Folgendes:

    • ENDPOINT_NAME: Eine eindeutige Kennung für Ihren Endpunkt.
    • S3_VPCE_IP_ADDRESS: die IP-Adresse Ihres Amazon S3-Schnittstellen-VPC-Endpunkts. Beispiel: 10.0.1.45.
    • S3_VPCE_PORT: die Portnummer Ihres Amazon S3-Schnittstellen-VPC-Endpunkts. Beispiel: 443.
    • PROJECT_NUMBER: Ihre Google CloudProjektnummer. Verwenden Sie Ihre Projektnummer im Flag --network.
    • VPC_NETWORK: der Name des Google Cloud VPC-Netzwerks, das mit Ihrer privaten Interconnect-Verbindung verknüpft ist.

Föderation einrichten

Wenn Sie Ihre Daten abfragen möchten, richten Sie einen föderierten Lakehouse-Katalog ein, der eine Verbindung zu Ihrem Remote-AWS-Katalog herstellt.

AWS-IAM-Rolle mit einer Platzhalter-Vertrauensrichtlinie erstellen

Lakehouse stellt nach der Katalogerstellung eine Google-Dienstkonto-ID bereit. Erstellen Sie die AWS-IAM-Rolle mit einer Platzhalter-Vertrauensrichtlinie.

  1. Erstellen Sie eine Datei mit dem Namen 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"
              ]
            }
          }
        }
      ]
    }
  2. Führen Sie den AWS CLI-Befehl aus, um die Rolle mit der Platzhalter-Trust-Richtlinie zu erstellen. Wir empfehlen, die maximale Sitzungsdauer auf 12 Stunden (43200 Sekunden) festzulegen, um zu verhindern, dass Anmeldedaten bei lang andauernden Jobs ablaufen:

    aws iam create-role \
      --role-name AWS_ROLE_NAME \
      --assume-role-policy-document file://trust_policy.json \
      --max-session-duration 43200

    Ersetzen Sie Folgendes:

    • AWS_ROLE_NAME: Ein Name für Ihre AWS-IAM-Rolle. Beispiel: lakehouse_glue_federation_role

Berechtigungsrichtlinie anhängen

Hängen Sie eine Berechtigungsrichtlinie an Ihre IAM-Rolle an, damit Lakehouse auf den Glue Data Catalog und die S3-Buckets der AWS-Region zugreifen kann. Diese Richtlinie gewährt auch Zugriff auf S3-Tabellen-Buckets, wenn Sie die AWS Lake Formation S3 Tables-Integration verwenden. Wenn Sie von den standardmäßigen AWS Glue-Datenberechtigungen auf das AWS Lake Formation-Modell umgestellt haben, müssen Sie möglicherweise stattdessen zusätzliche Berechtigungen in Lake Formation erteilen.

  1. Erstellen Sie eine Datei mit dem Namen permissions_policy.json und der folgenden Richtlinienkonfiguration.

    {
      "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:*"
          ]
        }
      ]
    }

    Wenn Sie kundenverwaltete Schlüssel verwenden, die in AWS Key Management Service (KMS) gehostet werden, um AWS Glue-, Amazon S3- oder Amazon S3-Tabellenressourcen zu verschlüsseln, müssen Sie eine Anweisung hinzufügen, die den Zugriff auf den KMS-Schlüssel zum Entschlüsseln der Ressourcen gewährt:

    # ...
    {
      "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"
      ]
    }
    # ...
  2. Hängen Sie diese Berechtigungsrichtlinie an Ihre IAM-Rolle an:

    aws iam put-role-policy \
      --role-name AWS_ROLE_NAME \
      --policy-name AWS_POLICY_NAME \
      --policy-document file://permissions_policy.json

    Ersetzen Sie Folgendes:

    • AWS_ROLE_NAME: Der Name Ihrer AWS-IAM-Rolle. Beispiel: lakehouse_glue_federation_role
    • AWS_POLICY_NAME: ein Name für Ihre Berechtigungsrichtlinie. Beispiel: lakehouse_glue_federation_policy.
    • AWS_REGION: Die AWS-Region, in der sich Ihr Glue-Katalog oder Ihre S3-Tabellen befinden. Beispiel: us-east-1.
    • AWS_ACCOUNT_ID: Ihre 12-stellige AWS-Konto-ID. Beispiel: 123456789012.

Föderierten Katalog erstellen

Richten Sie den föderierten Katalog auf Google Cloud ein, indem Sie die Google Cloud Console, die gcloud-Befehlszeile oder die REST API verwenden.

Um vorzeitige Fehler bei der Aktualisierung von Hintergrundmetadaten zu vermeiden, während AWS-Vertrauensbeziehungen übertragen werden, initialisieren Sie den Katalog, ohne einen Aktualisierungszeitplan anzugeben (der standardmäßig auf 0s festgelegt ist).

Console

So erstellen Sie einen föderierten Katalog:

  1. Rufen Sie in der Google Cloud Console Lakehouse auf.

    Lakehouse aufrufen

  2. Klicken Sie auf Katalog erstellen.

  3. Klicken Sie auf Föderierter Katalog.

    Die Details zur Katalogkonfiguration werden angezeigt.

  4. Wählen Sie unter Quelle des föderierten Katalogs die Option AWS Glue aus.

  5. Wählen Sie bei Data location (Speicherort der Daten) die Lakehouse-Region aus, in der Sie den föderierten Katalog erstellen möchten. Beispiel: us-east4. Um die Latenz zu minimieren (auch über das öffentliche Internet), wählen Sie die Google Cloud Region aus, die Ihrer AWS-Region am nächsten liegt.

  6. Klicken Sie auf Weiter.

    Die Verbindungsdetails werden angezeigt.

  7. Geben Sie im Abschnitt Details zum Remote-Katalog im Feld AWS-Warehouse Ihre AWS-Konto-ID oder den S3-Tabellen-Bucket-Katalog ein. Beispiel: 123456789012.

  8. Geben Sie im Feld AWS-Region Ihre AWS-Region ein. Beispiel: us-east-1

  9. Geben Sie im Feld ARN der AWS-Rolle den ARN der AWS-Rolle ein. Verwenden Sie das folgende Format: arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME.

  10. Optional: Geben Sie im Feld Service Directory-Name den Pfad zu Ihrem Service Directory-Endpunkt oder -Dienst ein. Dies ist nur erforderlich, wenn Sie eine private Verbindung (Cross-Cloud Interconnect) konfigurieren.

  11. Klicken Sie auf Erstellen.

Google Cloud CLI

Öffentliches Internet (kein CCI)

Wenn Sie CCI nicht konfigurieren, wird die Verbindung sicher über das öffentliche Internet übertragen.

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"

Kundeneigen (CCI)

Wenn Sie eine private Interconnect-Verbindung (z. B. Dedicated CCI oder Partner CCI) konfiguriert haben, geben Sie die Service Directory-Dienstreferenz an, damit Lakehouse Traffic privat weiterleitet.

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"'"
      }
    }
  }'

Ersetzen Sie Folgendes:

  • FEDERATED_CATALOG_NAME: ein Name für Ihren föderierten Katalog.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • REGION: Die Lakehouse-Region, in der der föderierte Katalog erstellt wird. Beispiel: us-east4.
  • GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE: die Kennung Ihres Zielkatalog für das Data Warehouse. Geben Sie für den Glue Data Catalog einer AWS-Region Ihre 12‑stellige AWS-Konto-ID ein. Beispiel: 123456789012 Wenn Sie einen S3-Tabellenbucket in der Region verwenden möchten, geben Sie AWS_ACCOUNT_ID:s3tablescatalog/S3_TABLE_BUCKET ein. Beispiel: 123456789012:s3tablescatalog/my-table-bucket
  • AWS_ACCOUNT_ID: Ihre 12-stellige AWS-Konto-ID. Beispiel: 123456789012.
  • AWS_REGION: Die AWS-Region, in der sich Ihr Glue-Katalog oder Ihr S3-Tabellen-Bucket befindet. Beispiel: us-east-1.
  • AWS_ROLE_NAME: der Name Ihrer AWS-IAM-Rolle. Beispiel: lakehouse_glue_federation_role.
  • NAMESPACE: (Optional) Der Service Directory-Namespace, den Sie bei der Einrichtung der privaten Interconnect-Verbindung erstellt haben.
  • SERVICE_NAME: (Optional) Der Name des Service Directory-Dienstes, den Sie bei der Einrichtung der privaten Interconnect-Verbindung erstellt haben.

Vertrauensrichtlinie aktualisieren

Wenn der Katalog erstellt wird, stellt Lakehouse ein eindeutiges Dienstkonto dafür bereit, das in der Antwort auf die Katalogerstellung als Feld biglake-service-account-id zurückgegeben wird. Sie verwenden dieses Dienstkonto, um die Vertrauensbeziehung herzustellen.

  1. Führen Sie den folgenden Befehl aus, um den biglake-service-account-id-Wert in eine aktive Bash-Variable zu extrahieren:

    LAKEHOUSE_SA_ID=$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --format="value(biglake-service-account-id)")
  2. Aktualisieren Sie die Vertrauensrichtlinie Ihrer AWS-IAM-Rolle, um den Platzhalter durch Ihre bestätigte Google Service Agent-ID zu ersetzen. Im Bedingungsblock wird geprüft, ob sowohl sub als auch aud übereinstimmen. Schreiben Sie die Richtlinie in eine Datei mit dem Namen trust_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
  3. Wenden Sie die endgültige Richtlinie auf Ihre AWS-Rolle an:

    aws iam update-assume-role-policy \
      --role-name AWS_ROLE_NAME \
      --policy-document file://trust_policy_comprehensive.json

Hintergrundaktualisierung von Metadaten aktivieren

Nachdem sichere Vertrauensstellungen auf beiden Plattformen erfolgreich eingerichtet wurden, aktualisieren Sie Ihren Katalog, um die Aktualisierung von Hintergrundmetadaten zu aktivieren (alle 5 Minuten oder 300s oder mehr).

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"
      }
    }
  }
}'

Einrichtung einer privaten Verbindung abschließen (nur Cross-Cloud Interconnect)

Wenn Sie Traffic über eine private Interconnect-Verbindung (Dedicated oder Partner CCI) weiterleiten, müssen Sie dem Dienstkonto des Lakehouse-Katalogs Berechtigungen erteilen, damit Verbindungen über Service Directory erkannt und autorisiert werden können.

Console

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  2. Klicken Sie auf Zugriff gewähren oder Hinzufügen.

  3. Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Dienstkontos für den Lakehouse-Katalog ein. Sie können diese E‑Mail abrufen, indem Sie den Katalog beschreiben (siehe Tab gcloud).

  4. Wählen Sie im Drop-down-Menü Rolle die Option Betrachter des Dienstverzeichnisses (roles/servicedirectory.viewer) aus.

  5. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie Service Directory PSC Authorized Service (roles/servicedirectory.pscAuthorizedService) aus.

  6. Klicken Sie auf Speichern.

gcloud-CLI

Weisen Sie dem Dienstkonto des Katalogs die erforderlichen Rollen zu:

# 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"

Verbindung prüfen

Prüfen Sie, ob der Aktualisierungszyklus für die Hintergrundmetadaten des Katalogs erfolgreich abgeschlossen wurde und die Namespaces synchronisiert sind.

  1. Prüfen Sie, ob der Aktualisierungsstatus „Erfolgreich“ lautet:

    gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID"
  2. Prüfen Sie, ob Remote-Datenbanken als synchronisierte Namespaces angezeigt werden:

    gcloud alpha biglake iceberg namespaces list \
      --project="PROJECT_ID" \
      --catalog="FEDERATED_CATALOG_NAME"

Nächste Schritte