Menyiapkan koneksi lintas cloud untuk AWS Glue

Koneksi lintas cloud ke AWS Glue Data Catalog memungkinkan Anda mengkueri data dari katalog tersebut langsung di dalam Google Cloud. Kemampuan ini menyatukan analisis data Anda dengan mengintegrasikan sumber data eksternal dengan lingkungan Google Cloud yang ada.

Setelah menyiapkan koneksi, Anda dapat membuat kueri dan mengatur tabel Apache Iceberg gabungan di Lakehouse tanpa memindahkan file.

Sebelum memulai

  1. Tinjau ringkasan Lakehouse untuk memahami cara Lakehouse mengelola akses ke data.
  2. Baca tentang mengakses data lintas cloud untuk memahami cara kerjanya.
  3. Tinjau katalog yang didukung untuk memverifikasi konfigurasi yang didukung.
  4. Opsional: Jika Anda berencana merutekan pembacaan kueri atau pemuatan ulang metadata latar belakang melalui interkoneksi pribadi antara jaringan Virtual Private Cloud (VPC) Google Clouddan VPC AWS, pastikan Anda memiliki akun AWS yang aktif, sediakan Cross-Cloud Interconnect Khusus atau Cross-Cloud Interconnect Partner, buat sesi BGP dengan Cloud Router, dan pastikan Anda memiliki izin Identity and Access Management (IAM) yang diperlukan di kedua lingkungan cloud.
  5. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigLake API, if it is not already enabled.

    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

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

  9. Enable the BigLake API, if it is not already enabled.

    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

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan guna menyiapkan Lakehouse untuk akses data lintas cloud, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Batasan dan pertimbangan

Bagian ini mencantumkan batasan dan pertimbangan untuk mengakses data lintas cloud.

  • Kontrol Layanan VPC: Jika project yang berisi endpoint katalog gabungan atau bucket Cloud Storage yang mendasarinya berada di dalam perimeter layanan Kontrol Layanan VPC, Anda harus mengonfigurasi aturan egress atau ingress. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Kontrol Layanan VPC dengan endpoint katalog gabungan.
  • Penyedia cloud yang didukung untuk Cross-Cloud Interconnect: Penggunaan interkoneksi pribadi untuk merutekan transportasi kueri, pemuatan ulang metadata latar belakang, atau keduanya didukung dengan AWS. Anda dapat menggunakan Dedicated Cross-Cloud Interconnect atau Cross-Cloud Interconnect partner.
  • Perutean jaringan: Jika Anda tidak mengonfigurasi interkoneksi pribadi untuk transportasi kueri atau pemuatan ulang metadata latar belakang, traffic yang sesuai akan dirutekan melalui internet publik menggunakan TLS. Merutekan pembacaan kueri melalui internet publik dapat mengakibatkan biaya egress yang lebih tinggi dari penyedia cloud jarak jauh Anda dan performa yang kurang dapat diprediksi.
  • Hanya baca: Katalog gabungan di Lakehouse adalah tampilan hanya baca dari katalog jarak jauh. Manipulasi resource (seperti membuat, memperbarui, atau menghapus resource) tidak didukung dan harus dilakukan langsung di katalog jarak jauh.
  • Keaktualan data: Flag --refresh-interval untuk katalog gabungan menentukan seberapa sering metadata disinkronkan. Nilainya harus 0s (dinonaktifkan) atau minimal 300s (5 menit). Pemuatan ulang metadata latar belakang katalog mungkin memerlukan waktu lebih lama seiring bertambahnya resource namespace dan tabel. Jika pemuatan ulang sebelumnya melebihi batas, pemuatan ulang saat ini akan dilewati, dan pemuatan ulang berikutnya akan dijadwalkan pada interval berikutnya. Kueri menggunakan metadata katalog yang paling baru disinkronkan, sehingga perubahan yang dilakukan di katalog jarak jauh, seperti tabel baru, pembaruan skema, atau data yang baru di-commit, tidak akan terlihat di Lakehouse hingga pemuatan ulang metadata latar belakang berikutnya selesai.
  • Caching Lakehouse: Caching lintas cloud dinonaktifkan secara default (--cross-cloud-cache=disabled). Anda dapat mengaktifkan atau menonaktifkan caching di level koneksi atau katalog gabungan. Kunci enkripsi yang dikelola pelanggan (CMEK) tidak didukung untuk caching; file yang di-cache dienkripsi menggunakan Google-owned and Google-managed encryption keys. Jika batasan kebijakan organisasi constraints/gcp.restrictNonCmekServices diterapkan pada tabel dalam kueri, caching akan otomatis dinonaktifkan untuk kueri tersebut. Untuk mengetahui informasi selengkapnya, lihat Caching cerdas.
  • Residensi dan kepatuhan data: Saat Anda mengaktifkan caching lintas cloud pada katalog atau koneksi gabungan, Lakehouse menyimpan sementara file yang di-cache dalam penyimpanan di Google Cloud region tempat kueri dijalankan. Jika file cloud jarak jauh Anda berada di wilayah hukum yang berbeda, pastikan caching lintas region memenuhi persyaratan residensi data dan kepatuhan organisasi Anda sebelum mengaktifkannya.

Alur kerja umum

Untuk mengakses data lintas cloud, ikuti langkah-langkah umum berikut:

  • Siapkan Cross-Cloud Interconnect (opsional): Konfigurasikan koneksi pribadi antara jaringan VPC Google Cloud Anda dan VPC AWS Anda.
  • Menyiapkan penggabungan: Konfigurasi autentikasi dengan membuat peran IAM dengan kebijakan kepercayaan placeholder di AWS. Kemudian, buat katalog gabungan di Lakehouse dan perbarui kebijakan kepercayaan.
  • Verifikasi koneksi: Pastikan Lakehouse dapat terhubung ke katalog jarak jauh Anda.
  • Membuat kueri data: Jalankan kueri terhadap data gabungan Anda menggunakan BigQuery atau Managed Service untuk Apache Spark menggunakan konvensi penamaan PROJECT_ID.CATALOG_NAME.NAMESPACE.TABLE 4 bagian. Anda dapat mengaktifkan caching lintas cloud di katalog gabungan untuk membantu mengurangi biaya egress lintas cloud dan mempercepat kueri berikutnya. Untuk mengetahui informasi selengkapnya, lihat Membuat kueri data jarak jauh.
  • Mengonfigurasi izin: Gunakan IAM untuk mengelola siapa yang dapat melihat dan mengkueri data gabungan.

Menyiapkan Cross-Cloud Interconnect (opsional)

Secara default, pembacaan data kueri dan pemuatan ulang metadata latar belakang dikirim melalui internet publik menggunakan TLS. Untuk membantu meningkatkan isolasi jaringan, memberikan latensi yang dapat diprediksi, dan mengurangi biaya transfer data, Anda dapat mengonfigurasi interkoneksi pribadi antara jaringan VPC Google Cloud dan jaringan cloud jarak jauh (AWS VPC).

Anda dapat menyediakan salah satu opsi interkoneksi pribadi berikut:

Buat sesi BGP antara Cloud Router di Google Cloud dan jaringan cloud jarak jauh Anda untuk mengaktifkan pertukaran rute.

Anda dapat mengonfigurasi pemilihan rute pribadi melalui Cross-Cloud Interconnect untuk salah satu atau kedua jalur traffic berikut, bergantung pada persyaratan keamanan dan biaya Anda:

  • Transportasi kueri (--service-directory-name): Merutekan pembacaan kueri dari BigQuery atau mesin open source ke penyimpanan objek jarak jauh (Amazon S3) untuk membantu menurunkan biaya egress lintas cloud dan menjaga latensi kueri tetap dapat diprediksi.
  • Pemuatan ulang metadata latar belakang (--metadata-service-directory-name): Merutekan permintaan autentikasi dan pemuatan ulang metadata latar belakang bidang kontrol dari katalog runtime Lakehouse ke endpoint pribadi AWS Glue Data Catalog jarak jauh Anda—misalnya, saat katalog jarak jauh Anda membatasi akses internet publik.

Jika Anda merutekan transpor kueri dan pemuatan ulang metadata latar belakang melalui Cross-Cloud Interconnect, selesaikan langkah-langkah endpoint pribadi, perutean, dan layanan Direktori Layanan sekali untuk endpoint penyimpanan jarak jauh dan sekali untuk endpoint katalog jarak jauh. Kedua layanan Direktori Layanan harus berada di region Google Cloud yang sama dengan katalog gabungan Anda dan dapat menggunakan subnet khusus proxy dan namespace Direktori Layanan yang sama.

Anda dapat menggunakan salah satu dari dua alur arsitektur untuk merutekan traffic dari Direktori Layanan ke endpoint pribadi jarak jauh:

  • Pemilihan rute Load Balancer Jaringan proxy regional internal: Menggunakan Google Cloud Load Balancer Jaringan proxy regional internal untuk mendistribusikan permintaan di seluruh Grup Endpoint Jaringan (NEG) Konektivitas Hybrid yang mengarah ke alamat IP endpoint pribadi jarak jauh Anda (AWS Elastic Network Interfaces (ENI)). Alur ini diperlukan untuk Cross-Cloud Interconnect Partner dan direkomendasikan untuk Cross-Cloud Interconnect Khusus untuk load balancing, skalabilitas, dan ketersediaan tinggi.
  • Perutean endpoint langsung: Menghubungkan Direktori Layanan langsung ke satu alamat IP endpoint pribadi jarak jauh. Alur ini hanya berfungsi dengan Dedicated Cross-Cloud Interconnect dan tidak didukung untuk Partner Cross-Cloud Interconnect.

Pilih alur konfigurasi yang sesuai dengan persyaratan arsitektur Anda:

Load Balancer Jaringan proxy regional internal

Untuk mengonfigurasi Load Balancer Jaringan proxy regional internal yang mendistribusikan permintaan ke seluruh alamat IP endpoint pribadi jarak jauh, ikuti langkah-langkah berikut:

Mengonfigurasi endpoint pribadi cloud jarak jauh

Buat endpoint pribadi di jaringan jarak jauh dan subnet yang terhubung ke jaringan VPC Google Cloud Anda melalui Cross-Cloud Interconnect, dan catat alamat IP pribadi yang ditetapkan ke setiap endpoint:

  • Untuk transportasi kueri pribadi (penyimpanan objek jarak jauh): Buat Endpoint VPC Antarmuka untuk Amazon S3 (com.amazonaws.AWS_REGION.s3) di VPC AWS Anda, dan catat alamat IP pribadi ENI yang disediakan.
  • Untuk pemuatan ulang metadata latar belakang pribadi (katalog jarak jauh): Buat Endpoint VPC Antarmuka untuk AWS Glue (com.amazonaws.AWS_REGION.glue) di VPC AWS Anda, dan catat alamat IP pribadi ENI yang disediakan.
  • Aturan keamanan masuk: Pastikan Grup Keamanan AWS yang terpasang ke endpoint pribadi Anda mengizinkan traffic TCP masuk di port 443 dari rentang CIDR VPC Google Cloud Anda. Sertakan rentang CIDR subnet khusus proxy Google Cloud Anda untuk mengizinkan health check dan traffic yang diteruskan.

Mengonfigurasi Google Cloud jaringan

Jalankan perintah berikut untuk mengonfigurasi load balancer internal. Jika Anda merutekan transpor kueri dan pemuatan ulang metadata latar belakang melalui Cross-Cloud Interconnect, konfigurasikan layanan backend, proxy TCP target, dan aturan penerusan terpisah untuk endpoint penyimpanan dan endpoint katalog Anda. Untuk konfigurasi lanjutan, lihat Menyiapkan Load Balancer Jaringan proxy regional internal untuk endpoint hybrid.

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

Ganti kode berikut:

  • PROXY_SUBNET_NAME: nama untuk subnet khusus proxy.
  • PROXY_SUBNET_RANGE: rentang CIDR yang tidak digunakan dalam jaringan VPC Anda (misalnya, 10.129.0.0/23).
  1. Buat health check TCP regional:

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

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama untuk health check.
    • REGION: region Google Cloud (misalnya, us-east4).
  2. Buat Grup Endpoint Jaringan (NEG) Konektivitas Hybrid dan tambahkan endpoint:

    Buat NEG hybrid (NON_GCP_PRIVATE_IP_PORT) untuk setiap zona:

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

    Tambahkan alamat IP pribadi ENI endpoint jarak jauh Anda ke NEG hybrid:

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

    Ganti kode berikut:

    • NEG_NAME: nama untuk NEG hybrid.
    • ZONE: zona Google Cloud (misalnya, us-east4-a). Zona ini harus berada dalam region lampiran VLAN Cross-Cloud Interconnect Anda.
    • VPC_NETWORK: nama jaringan VPC Anda.
    • REMOTE_ENDPOINT_IP: alamat IP pribadi endpoint pribadi penyimpanan jarak jauh atau katalog jarak jauh Anda di zona tersebut.

    Jika endpoint jarak jauh Anda memiliki beberapa alamat IP pribadi yang didistribusikan di seluruh zona, ulangi perintah ini untuk membuat NEG hybrid dan menambahkan endpoint untuk setiap zona.

  3. Buat dan konfigurasikan layanan backend:

    Buat layanan backend regional dengan load balancing terkelola internal:

    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

    Tambahkan NEG hybrid ke layanan 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

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama untuk layanan backend.
    • NEG_NAME: nama NEG hybrid yang Anda buat di langkah sebelumnya.
    • ZONE: zona Google Cloud (misalnya, us-east4-a).
    • MAX_CONNECTIONS: koneksi serentak maksimum untuk backend (misalnya, 100).

    Ulangi perintah add-backend untuk setiap NEG hybrid yang Anda buat.

  4. Konfigurasikan frontend load balancer:

    Buat proxy TCP target:

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

    Buat aturan penerusan untuk mengarahkan traffic ke proxy target:

    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

    Ganti kode berikut:

    • TARGET_PROXY_NAME: nama untuk proxy target.
    • FORWARDING_RULE_NAME: nama untuk aturan penerusan.
    • VPC_SUBNET: nama subnetwork VPC Anda.

Setelah membuat aturan penerusan untuk load balancer, catat alamat IP internal yang ditetapkan ke aturan tersebut. Ini adalah ILB_IP_ADDRESS Anda.

Mengonfigurasi Direktori Layanan

Daftarkan alamat IP load balancer internal di Direktori Layanan agar Lakehouse dapat menemukan dan merutekan ke alamat IP tersebut secara pribadi. Jika Anda mengonfigurasi aturan penerusan load balancer terpisah untuk transpor kueri dan pemuatan ulang metadata latar belakang, buat layanan dan endpoint Direktori Layanan terpisah untuk setiap alamat IP aturan penerusan.

  1. Buat namespace untuk endpoint pribadi jarak jauh Anda:

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

    Ganti kode berikut:

    • NAMESPACE: ID unik untuk namespace Anda.
    • PROJECT_ID: project ID Google Cloud Anda.
    • REGION: region Google Cloud (misalnya, us-east4). Region ini harus sama dengan region katalog gabungan Anda.
  2. Buat layanan di namespace Direktori Layanan:

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

    Ganti kode berikut:

    • SERVICE_NAME: ID unik untuk layanan Anda (buat nama layanan terpisah, seperti METADATA_SERVICE_NAME, saat mendaftarkan endpoint refresh metadata latar belakang).
  3. Buat endpoint untuk aturan penerusan load balancer di layanan:

    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

    Ganti kode berikut:

    • ENDPOINT_NAME: ID unik untuk endpoint Anda.
    • PROJECT_NUMBER: nomor project Google Cloud Anda. Gunakan nomor project Anda di flag --network.
    • ILB_IP_ADDRESS: alamat IP internal aturan penerusan load balancer Anda.

Endpoint langsung

Untuk mengonfigurasi Direktori Layanan agar merutekan traffic langsung ke satu alamat IP endpoint pribadi jarak jauh melalui Dedicated Cross-Cloud Interconnect, ikuti langkah-langkah berikut:

  1. Buat endpoint pribadi di jaringan cloud jarak jauh Anda:

    Catat alamat IP pribadi dan port (443) setiap endpoint, dan pastikan AWS Security Group Anda mengizinkan traffic TCP masuk di port 443 dari jaringan VPC Google Cloud Anda.

  2. Buat namespace untuk endpoint pribadi jarak jauh Anda:

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

    Ganti kode berikut:

    • NAMESPACE: ID unik untuk namespace Anda.
    • PROJECT_ID: project ID Google Cloud Anda.
    • REGION: region Google Cloud (misalnya, us-east4). Region ini harus sama dengan region katalog gabungan Anda.
  3. Buat layanan di namespace Direktori Layanan (jika Anda merutekan transportasi kueri dan pemuatan ulang metadata latar belakang secara pribadi, buat layanan terpisah untuk setiap endpoint):

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

    Ganti kode berikut:

    • SERVICE_NAME: ID unik untuk layanan Anda (buat nama layanan terpisah, seperti METADATA_SERVICE_NAME, saat mendaftarkan endpoint refresh metadata latar belakang).
  4. Buat endpoint di layanan dengan alamat IP pribadi dan port endpoint pribadi jarak jauh Anda:

    gcloud service-directory endpoints create ENDPOINT_NAME \
        --service=SERVICE_NAME \
        --namespace=NAMESPACE \
        --project=PROJECT_ID \
        --location=REGION \
        --address=REMOTE_ENDPOINT_IP \
        --port=REMOTE_ENDPOINT_PORT \
        --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK

    Ganti kode berikut:

    • ENDPOINT_NAME: ID unik untuk endpoint Anda.
    • REMOTE_ENDPOINT_IP: alamat IP pribadi dari endpoint pribadi penyimpanan jarak jauh atau katalog jarak jauh Anda (misalnya, 10.0.1.45).
    • REMOTE_ENDPOINT_PORT: nomor port endpoint pribadi jarak jauh Anda (misalnya, 443).
    • PROJECT_NUMBER: nomor project Google Cloud Anda. Gunakan nomor project Anda di flag --network.
    • VPC_NETWORK: nama jaringan VPC Google Cloud yang terkait dengan interkoneksi pribadi Anda.

Menyiapkan penggabungan

Untuk mengkueri data, Anda harus menyiapkan katalog gabungan Lakehouse yang terhubung ke AWS Glue Data Catalog jarak jauh.

Membuat peran AWS IAM dengan kebijakan kepercayaan placeholder

Lakehouse menyediakan ID akun layanan Google setelah pembuatan katalog. Buat peran AWS IAM dengan kebijakan kepercayaan placeholder.

  1. Buat file bernama 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. Jalankan perintah AWS CLI untuk membuat peran dengan kebijakan kepercayaan placeholder. Sebaiknya tetapkan durasi sesi maksimum ke 12 jam (43200 detik) untuk mencegah masa berlaku kredensial habis selama tugas yang berjalan lama:

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

    Ganti kode berikut:

    • AWS_ROLE_NAME: nama untuk peran IAM AWS Anda. Contoh, lakehouse_glue_federation_role.

Melampirkan kebijakan izin

Lampirkan kebijakan izin ke peran IAM Anda yang memungkinkan Lakehouse mengakses Glue Data Catalog dan bucket S3 region AWS. Kebijakan ini juga memberikan akses ke bucket tabel S3 jika Anda menggunakan integrasi Tabel S3 AWS Lake Formation. Jika Anda telah mengupgrade dari izin data AWS Glue default ke model AWS Lake Formation, Anda mungkin perlu memberikan izin tambahan di Lake Formation.

  1. Buat file bernama permissions_policy.json dengan konfigurasi kebijakan berikut.

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

    Jika Anda menggunakan kunci yang dikelola pelanggan yang dihosting di AWS Key Management Service (KMS) untuk mengenkripsi resource AWS Glue, Amazon S3, atau Amazon S3 Tables, Anda harus menambahkan pernyataan yang memberikan akses kunci KMS untuk mendekripsi resource:

    # ...
    {
      "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. Lampirkan kebijakan izin ini ke peran IAM Anda:

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

    Ganti kode berikut:

    • AWS_ROLE_NAME: nama peran IAM AWS Anda. Contoh, lakehouse_glue_federation_role.
    • AWS_POLICY_NAME: nama untuk kebijakan izin Anda. Contoh, lakehouse_glue_federation_policy.
    • AWS_REGION: region AWS tempat katalog Glue atau Tabel S3 Anda berada. Contoh, us-east-1.
    • AWS_ACCOUNT_ID: string ID akun AWS 12 digit Anda. Contoh, 123456789012.

Membuat katalog gabungan

Buat katalog gabungan menggunakan konsol Google Cloud atau Google Cloud CLI.

Untuk mencegah kegagalan pembaruan metadata latar belakang prematur saat hubungan kepercayaan AWS sedang diterapkan, lakukan inisialisasi katalog tanpa menentukan jadwal pembaruan (yang secara default ditetapkan ke 0s).

Konsol

Untuk membuat katalog gabungan:

  1. Di konsol Google Cloud , buka Lakehouse.

    Buka Lakehouse

  2. Klik Create catalog.

  3. Klik Federated catalog.

    Bagian Konfigurasi katalog akan muncul.

  4. Untuk Federated catalog source, pilih AWS Glue.

  5. Untuk Data location, pilih region Lakehouse tempat Anda ingin membuat katalog gabungan. Contoh, us-east4. Untuk meminimalkan latensi (bahkan melalui internet publik), pilih region Google Cloud yang paling dekat dengan region AWS Anda.

  6. Klik Lanjutkan.

    Bagian Connection details akan muncul.

  7. Di bagian Remote catalog details, di kolom AWS warehouse, masukkan ID akun AWS atau katalog bucket tabel S3 Anda. Misalnya: 123456789012 atau 123456789012:s3tablescatalog/my-table-bucket.

  8. Di kolom AWS region, masukkan region AWS Anda. Contoh: us-east-1.

  9. Di kolom AWS role ARN, masukkan ARN peran AWS Anda. Gunakan format berikut: arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME.

  10. Di bagian Lapisan transpor, pilih Public internet atau Dedicated private interconnect. Jika Anda memilih Dedicated private interconnect, konfigurasikan kolom berikut:

    • Di kolom Service directory name, masukkan jalur ke layanan Direktori Layanan transportasi Anda dalam format projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME.
    • Opsional: Untuk menyinkronkan metadata katalog secara pribadi melalui Cross-Cloud Interconnect, di kolom Metadata service directory name, masukkan jalur ke layanan Direktori Layanan metadata Anda dalam format projects/PROJECT_ID/locations/REGION/namespaces/METADATA_SERVICE_DIRECTORY_NAMESPACE/services/METADATA_SERVICE_NAME.
  11. Klik Create.

gcloud

Internet publik (tanpa CCI)

Jika Anda tidak mengonfigurasi Cross-Cloud Interconnect, koneksi akan berjalan melalui internet publik menggunakan TLS.

gcloud 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" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --cross-cloud-cache="CROSS_CLOUD_CACHE_MODE"

Milik pelanggan (CCI)

Jika Anda mengonfigurasi interkoneksi pribadi (Dedicated atau Partner Cross-Cloud Interconnect), berikan referensi layanan Direktori Layanan untuk transportasi kueri pribadi (--service-directory-name), pemuatan ulang metadata latar belakang pribadi (--metadata-service-directory-name), atau keduanya. Anda juga dapat menambahkan atau memperbarui salah satu flag pada katalog yang ada dengan menjalankan gcloud biglake iceberg catalogs update.

gcloud 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" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --cross-cloud-cache="CROSS_CLOUD_CACHE_MODE" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME" \
    --metadata-service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/METADATA_SERVICE_DIRECTORY_NAMESPACE/services/METADATA_SERVICE_NAME"

Ganti kode berikut:

  • FEDERATED_CATALOG_NAME: nama untuk katalog gabungan Anda.
  • PROJECT_ID: Project ID Google Cloud Anda.
  • REGION: region Lakehouse tempat katalog gabungan dibuat. Region ini harus sama dengan namespace Direktori Layanan dan secret regional.
  • GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE: ID katalog warehouse target Anda. Untuk Glue Data Catalog region AWS, masukkan string ID akun AWS 12 digit Anda. Contoh, 123456789012. Untuk menggunakan bucket tabel S3 di region tersebut, masukkan AWS_ACCOUNT_ID:s3tablescatalog/S3_TABLE_BUCKET. Contoh, 123456789012:s3tablescatalog/my-table-bucket.
  • AWS_ACCOUNT_ID: string ID akun AWS 12 digit Anda. Contoh, 123456789012.
  • AWS_REGION: region AWS tempat katalog Glue atau bucket tabel S3 Anda berada. Contoh, us-east-1.
  • AWS_ROLE_NAME: nama peran IAM AWS Anda. Contoh, lakehouse_glue_federation_role.
  • NAMESPACE_FILTERS: Opsional: daftar namespace yang dipisahkan koma untuk digabungkan. Contoh, ns1,ns2. Jika dihilangkan, Lakehouse akan menyertakan semua namespace.
  • CROSS_CLOUD_CACHE_MODE: Opsional: apakah akan mengaktifkan caching lintas cloud di katalog gabungan (enabled atau disabled). Defaultnya adalah disabled. Jika disetel ke enabled, Lakehouse akan meng-cache file jarak jauh di regionGoogle Cloud katalog. Untuk mengetahui informasi selengkapnya, lihat Caching cerdas.
  • Jika Anda menggunakan interkoneksi pribadi (Cross-Cloud Interconnect), tentukan salah satu atau kedua referensi Direktori Layanan berikut (hilangkan salah satu flag jika Anda tidak merutekan lapisan traffic tersebut melalui Cross-Cloud Interconnect):
    • SERVICE_DIRECTORY_NAMESPACE dan SERVICE_NAME: namespace Direktori Layanan dan nama layanan yang Anda buat untuk transportasi kueri pribadi ke penyimpanan objek jarak jauh.
    • METADATA_SERVICE_DIRECTORY_NAMESPACE dan METADATA_SERVICE_NAME: namespace dan nama layanan Direktori Layanan yang Anda buat untuk pemuatan ulang metadata latar belakang pribadi.

Memperbarui kebijakan kepercayaan

Saat katalog dibuat, Lakehouse menyediakan akun layanan unik untuk katalog tersebut, yang ditampilkan sebagai kolom biglake-service-account-id dalam respons pembuatan katalog. Anda menggunakan akun layanan ini untuk membangun hubungan kepercayaan.

  1. Jalankan perintah berikut untuk mengekstrak nilai biglake-service-account-id ke dalam variabel bash aktif:

    LAKEHOUSE_SA_ID=$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --format="value(biglake-service-account-id)")
  2. Perbarui kebijakan kepercayaan peran AWS IAM Anda untuk mengganti placeholder dengan ID Agen Layanan Google yang telah diverifikasi. Blok kondisi memvalidasi pencocokan sub dan aud. Tulis kebijakan ke file bernama 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. Terapkan kebijakan yang telah diselesaikan ke peran AWS Anda:

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

Mengaktifkan pemuatan ulang metadata latar belakang

Setelah hubungan kepercayaan yang aman berhasil dibuat di kedua platform, perbarui katalog Anda untuk mengaktifkan pemuatan ulang metadata latar belakang (setiap 5 menit atau 300s, atau lebih besar).

gcloud

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

Menyelesaikan penyiapan interkoneksi pribadi (khusus Cross-Cloud Interconnect)

Jika Anda merutekan transportasi kueri, pemuatan ulang metadata latar belakang, atau keduanya melalui interconnect pribadi (Dedicated atau Partner Cross-Cloud Interconnect), Anda harus memberikan izin akun layanan katalog Lakehouse untuk menemukan dan mengizinkan koneksi melalui Direktori Layanan. Jika layanan Direktori Layanan transportasi dan layanan Direktori Layanan metadata Anda dihosting di project Google Cloud yang berbeda, berikan peran ini di setiap project yang menghosting layanan Direktori Layanan.

Konsol

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM

  2. Klik Berikan akses (atau Tambahkan).

  3. Di kolom New principals, masukkan alamat email akun layanan katalog Lakehouse. Anda dapat mengambil alamat email ini dengan mendeskripsikan katalog (lihat tab gcloud).

  4. Di menu Role, pilih Service Directory Viewer (roles/servicedirectory.viewer).

  5. Klik Add another role, lalu pilih Service Directory PSC Authorized Service (roles/servicedirectory.pscAuthorizedService).

  6. Klik Simpan.

gcloud

Berikan peran yang diperlukan ke akun layanan katalog di project yang menghosting layanan Direktori Layanan Anda:

# Grant Service Directory Viewer
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:$(gcloud 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 biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --format='value(biglake-service-account)')" \
--role="roles/servicedirectory.pscAuthorizedService"

Memverifikasi koneksi

Pastikan siklus pemuatan ulang metadata latar belakang katalog berhasil diselesaikan dan namespace disinkronkan.

  1. Pastikan status refresh menunjukkan keberhasilan:

    gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID"
  2. Pastikan namespace telah disinkronkan:

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

Langkah berikutnya