Dokumen ini menjelaskan cara menyiapkan Lakehouse tanpa batas untuk mengueri data dari katalog AWS Glue langsung dalam Google Cloud. Kemampuan ini menyatukan analisis data Anda dengan mengintegrasikan sumber data eksternal dengan lingkungan yang ada. Google Cloud
Setelah itu, Anda dapat menggunakan Lakehouse untuk Apache Iceberg guna mengelola akses ke data gabungan Anda.
Sebelum memulai
- Tinjau ringkasan Lakehouse untuk memahami cara Lakehouse mengelola akses ke data.
- Baca Tentang Lakehouse tanpa batas untuk memahami cara kerjanya.
- Tinjau katalog yang didukung untuk memverifikasi persyaratan format tabel dan konfigurasi yang didukung.
- Pastikan Administrator AWS Anda memiliki izin untuk membuat peran Identity and Access Management (IAM) dan mengonfigurasi kebijakan izin.
- Opsional: Jika Anda berencana merutekan kueri melalui interkoneksi pribadi antara VPC Anda dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS), pastikan Anda memiliki akun aktif dengan penyedia jarak jauh Anda, sediakan Dedicated Cross-Cloud Interconnect atau Partner Cross-Cloud Interconnect, buat sesi BGP dengan Cloud Router Anda, dan verifikasi bahwa Anda memiliki izin IAM yang diperlukan di kedua lingkungan cloud. Google Cloud
- 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.
-
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.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan Lakehouse tanpa batas, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Mengelola katalog Lakehouse:
Admin BigLake (
roles/biglake.admin) -
Merutekan traffic melalui interkoneksi pribadi (Pengguna):
Admin Jaringan Compute (
roles/compute.networkAdmin) -
Merutekan traffic melalui interkoneksi pribadi (Akun layanan katalog):
- Pelihat Direktori Layanan (
roles/servicedirectory.viewer) - Layanan yang Diizinkan PSC Service Directory (
roles/servicedirectory.pscAuthorizedService)
- Pelihat Direktori Layanan (
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 menggunakan Lakehouse tanpa batas.
- Penyedia Cloud yang Didukung: Penggunaan interkoneksi pribadi dengan Lakehouse tanpa batas didukung dengan penyedia cloud jarak jauh berikut: Amazon Web Services (AWS). Anda dapat menggunakan Dedicated Cross-Cloud Interconnect atau Partner Cross-Cloud Interconnect.
- Perutean jaringan: Jika interkoneksi pribadi (seperti CCI Khusus atau CCI Partner) tidak dikonfigurasi, kueri akan dirutekan melalui internet publik. Hal ini dapat menyebabkan biaya traffic keluar yang lebih tinggi dari penyedia cloud jarak jauh Anda dan performa yang kurang dapat diprediksi.
- Keaktualan data: Flag
--refresh-intervaluntuk katalog gabungan menentukan seberapa sering metadata disinkronkan. Interval yang lebih pendek memberikan data yang lebih aktual, tetapi dapat menimbulkan biaya API tambahan dari penyedia katalog jarak jauh. - Pelaporan Metrik Iceberg:
Pelaporan Metrik Iceberg tidak tersedia untuk
katalog gabungan. Tetapkan properti
rest-metrics-reporting-enabledkefalsedi klien Iceberg Anda saat mengakses katalog gabungan.
Alur kerja umum
Untuk menyiapkan dan menggunakan Lakehouse tanpa batas, ikuti langkah-langkah umum berikut:
- Siapkan Cross-Cloud Interconnect (Opsional): Konfigurasi koneksi pribadi antara Google Cloud VPC Anda dan penyedia cloud jarak jauh Anda.
- Siapkan federasi: Konfigurasi autentikasi dengan membuat peran IAM dengan kebijakan kepercayaan placeholder dengan penyedia jarak jauh Anda. Kemudian, buat katalog gabungan di Lakehouse dan perbarui kebijakan kepercayaan.
- Verifikasi koneksi: Pastikan Lakehouse dapat terhubung ke katalog jarak jauh Anda dengan berhasil.
- Kueri data: Jalankan kueri terhadap data gabungan Anda menggunakan BigQuery atau Managed Service untuk Apache Spark. Untuk mengetahui informasi selengkapnya, lihat Menggunakan Lakehouse tanpa batas.
- Mengonfigurasi izin: Gunakan IAM untuk mengelola siapa yang dapat melihat dan mengkueri data gabungan.
Menyiapkan Cross-Cloud Interconnect (Opsional)
Kueri ke katalog jarak jauh Anda dikirim melalui internet publik secara default. Untuk membantu meningkatkan keamanan dan kepatuhan, memberikan performa yang dapat diprediksi, dan mengurangi biaya transfer data, gunakan interkoneksi pribadi. Hal ini akan membuat koneksi jaringan pribadi khusus antara Google Cloud Virtual Private Cloud (VPC) Anda dan jaringan penyedia cloud jarak jauh Anda (misalnya, AWS).
Anda dapat menyediakan dan mengonfigurasi salah satu opsi interkoneksi pribadi berikut antara VPC Anda dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS): Google Cloud
- Dedicated Cross-Cloud Interconnect: Koneksi fisik khusus.
- Partner Cross-Cloud Interconnect: Koneksi melalui penyedia layanan yang didukung.
Buat sesi BGP antara Cloud Router Anda di Google Cloud dan VPC penyedia cloud jarak jauh Anda untuk memastikan pertukaran rute.
Untuk mengaktifkan kueri pribadi, Anda harus mengonfigurasi jalur dari Lakehouse ke bucket penyimpanan jarak jauh Anda (misalnya, bucket AWS Amazon S3) melalui interkoneksi pribadi Anda. Ada dua alur arsitektur yang dapat Anda ikuti untuk mengonfigurasi pemilihan rute ini:
- Perutean Load Balancer Jaringan proxy regional internal: Alur ini menggunakan Google Cloud Load Balancer Jaringan proxy regional internal untuk mendistribusikan permintaan di seluruh Grup Endpoint Jaringan (NEG) Konektivitas Hybrid yang mengarah ke beberapa Elastic Network Interface (ENI) AWS. Alur ini sangat penting untuk load balancing, skalabilitas, dan ketersediaan tinggi. Hal ini diperlukan untuk CCI Partner dan direkomendasikan untuk CCI Khusus untuk load balancing, skalabilitas, dan ketersediaan tinggi.
- Perutean endpoint langsung: Alur ini menghubungkan Service Directory langsung ke satu alamat IP Endpoint VPC Antarmuka AWS. Alur ini hanya berfungsi untuk CCI Khusus dan tidak didukung untuk CCI Partner.
Pilih alur konfigurasi yang sesuai dengan persyaratan arsitektur Anda:
Load Balancer Jaringan proxy internal regional
Untuk mengonfigurasi Load Balancer Jaringan proxy regional internal guna mendistribusikan permintaan di beberapa ENI AWS untuk ketersediaan tinggi dan load balancing, ikuti langkah-langkah berikut:
Mengonfigurasi jaringan AWS
Pertama, buat Endpoint Antarmuka VPC Amazon S3 (AWS PrivateLink):
- Di konsol AWS VPC, buat Endpoint Antarmuka untuk Amazon S3.
- Untuk nama layanan, tentukan
com.amazonaws.AWS_REGION.s3. - Pilih VPC dan subnet yang terhubung melalui Direct Connect ke VPC Anda. Google Cloud
- Lampirkan Grup Keamanan ke endpoint untuk mengontrol akses masuk.
- Tindakan ini menyediakan Elastic Network Interface (ENI) di setiap subnet yang dipilih. Catat alamat IP pribadi ENI ini.
Selanjutnya, konfigurasikan Grup Keamanan:
- Pastikan bahwa Grup Keamanan yang dilampirkan ke
ENI Endpoint Amazon S3 mengizinkan traffic TCP masuk di port
443dari Google Cloud VPC Anda. Ini harus mencakup rentang CIDR dari subnet khusus proxy Anda untuk mengizinkan health check dan traffic yang diteruskan.Google Cloud
Mengonfigurasi Google Cloud jaringan
Untuk menyederhanakan penyiapan, jalankan perintah berikut untuk mengonfigurasi load balancer internal. Untuk konfigurasi lanjutan atau detail selengkapnya, 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).
Membuat health check 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: Google Cloud region (misalnya,us-east4).
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 AWS Anda ke NEG hibrida yang sesuai:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_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.AWS_S3_IP: alamat IP pribadi Endpoint VPC AWS Amazon S3 (ENI) di zona tersebut.
Ulangi perintah ini untuk membuat NEG dan menambahkan endpoint untuk zona lain jika ENI AWS Anda didistribusikan di beberapa zona.
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: jumlah maksimum koneksi serentak yang harus ditangani backend (misalnya,100).
Ulangi perintah
add-backenduntuk setiap NEG hybrid yang Anda buat.Konfigurasi 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 merutekan 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 untuknya. Ini adalah
ILB_IP_ADDRESS Anda.
Mengonfigurasi Service Directory
Daftarkan alamat IP ILB di Service Directory, sehingga Lakehouse dapat menemukannya.
Buat namespace untuk cloud 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: Google Cloud Project ID Anda.REGION: Google Cloud region. Contoh,us-east4. Region ini harus sama dengan region katalog gabungan.
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 endpoint untuk ILB 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 ILB Anda.
Endpoint langsung
Untuk mengonfigurasi Service Directory agar merutekan traffic langsung ke satu alamat IP Endpoint VPC Antarmuka AWS, ikuti langkah-langkah berikut:
- Buat Endpoint VPC Antarmuka untuk Amazon S3 di dalam VPC AWS Anda. Catat alamat IP dan port endpoint ini.
Buat namespace untuk cloud 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: Google Cloud Project ID Anda.REGION: Google Cloud region. Contoh,us-east4. Region ini harus sama dengan region katalog gabungan.
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 endpoint di layanan yang berisi informasi perutean untuk Endpoint VPC Antarmuka Amazon S3 Anda:
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
Ganti kode berikut:
ENDPOINT_NAME: ID unik untuk endpoint Anda.S3_VPCE_IP_ADDRESS: alamat IP Endpoint VPC Antarmuka Amazon S3 Anda. Contoh,10.0.1.45.S3_VPCE_PORT: nomor port Endpoint VPC Antarmuka Amazon S3. Contoh,443.PROJECT_NUMBER: nomor project Google Cloud Anda. Gunakan nomor project Anda di flag--network.VPC_NETWORK: nama jaringan Google Cloud VPC yang terkait dengan interkoneksi pribadi Anda.
Menyiapkan penggabungan
Untuk membuat kueri data, siapkan katalog gabungan Lakehouse yang terhubung ke katalog AWS jarak jauh Anda.
Buat peran AWS IAM dengan kebijakan kepercayaan placeholder
Lakehouse menyediakan ID akun layanan Google setelah pembuatan katalog. Buat peran AWS IAM dengan kebijakan kepercayaan placeholder.
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" ] } } } ] }
Jalankan perintah AWS CLI untuk membuat peran dengan kebijakan kepercayaan placeholder. Sebaiknya tetapkan durasi sesi maksimum ke 12 jam (
43200detik) untuk mencegah masa berlaku kredensial berakhir 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 bucket S3 dan Katalog Data Glue di 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.
Buat file bernama
permissions_policy.jsondengan 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 Tabel Amazon S3, 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" ] } # ...
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 di Google Cloud dengan menggunakan Google Cloud console, gcloud CLI
atau REST API.
Untuk mencegah kegagalan refresh metadata di latar belakang sebelum waktunya saat hubungan kepercayaan AWS disebarkan, lakukan inisialisasi katalog tanpa menentukan jadwal refresh (yang secara default adalah 0s).
Konsol
Untuk membuat katalog gabungan:
Di konsol Google Cloud , buka Lakehouse.
Klik Buat katalog.
Klik Federated catalog.
Detail Konfigurasi katalog akan muncul.
Untuk Federated catalog source, pilih AWS Glue.
Untuk Lokasi data, 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.Klik Lanjutkan.
Detail Detail koneksi akan muncul.
Di bagian Detail katalog jarak jauh, di kolom AWS warehouse, masukkan ID akun AWS atau katalog bucket tabel S3 Anda. Misalnya:
123456789012Di kolom AWS region, masukkan region AWS Anda. Contoh:
us-east-1.Di kolom AWS role ARN, masukkan ARN peran AWS Anda. Gunakan format berikut:
arn:aws:iam::AWS_ACCOUNT_ID:role/AWS_ROLE_NAME.Opsional: Di kolom Nama direktori layanan, masukkan jalur ke endpoint atau layanan Service Directory Anda. Langkah ini hanya diperlukan jika Anda mengonfigurasi interkoneksi pribadi (Cross-Cloud Interconnect).
Klik Create.
Google Cloud CLI
Internet publik (tanpa CCI)
Jika Anda tidak mengonfigurasi CCI, koneksi akan berjalan dengan aman melalui internet publik.
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"
Milik pelanggan (CCI)
Jika Anda mengonfigurasi Private Interconnect (seperti Dedicated CCI atau Partner CCI), berikan referensi layanan Service Directory untuk memastikan Lakehouse merutekan traffic secara pribadi.
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"'" } } }'
Ganti kode berikut:
FEDERATED_CATALOG_NAME: nama untuk katalog gabungan Anda.PROJECT_ID: Google Cloud Project ID Anda.REGION: region Lakehouse tempat katalog gabungan dibuat. Contoh,us-east4.GLUE_OR_S3_TABLE_BUCKET_WAREHOUSE: ID katalog gudang data 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, masukkanAWS_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 bucket tabel S3 atau katalog Glue Anda berada. Contoh,us-east-1.AWS_ROLE_NAME: nama peran IAM AWS Anda. Contoh,lakehouse_glue_federation_role.NAMESPACE: (Opsional) namespace Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.SERVICE_NAME: (Opsional) nama layanan Service Directory yang Anda buat selama penyiapan interkoneksi pribadi.
Memperbarui kebijakan kepercayaan
Saat katalog dibuat, Lakehouse menyediakan akun layanan unik untuknya, yang ditampilkan sebagai kolom biglake-service-account-id dalam respons pembuatan katalog. Anda menggunakan akun layanan ini untuk
membuat hubungan tepercaya.
Jalankan perintah berikut untuk mengekstrak nilai
biglake-service-account-idke dalam variabel bash aktif:LAKEHOUSE_SA_ID=$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format="value(biglake-service-account-id)")
Perbarui kebijakan kepercayaan peran AWS IAM Anda untuk mengganti placeholder dengan ID Agen Layanan Google terverifikasi Anda. Blok kondisi memvalidasi kecocokan
subdanaud. Tulis kebijakan ke file bernamatrust_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
Terapkan kebijakan akhir ke peran AWS Anda:
aws iam update-assume-role-policy \ --role-name AWS_ROLE_NAME \ --policy-document file://trust_policy_comprehensive.json
Mengaktifkan pembaruan metadata latar belakang
Setelah hubungan kepercayaan yang aman berhasil dibuat di kedua platform, perbarui katalog Anda untuk mengaktifkan refresh metadata di latar belakang (setiap 5 menit atau 300s, atau lebih besar).
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" } } } }'
Menyelesaikan penyiapan interconnect pribadi (khusus Cross-Cloud Interconnect)
Jika Anda merutekan traffic melalui interconnect pribadi (CCI Khusus atau Partner), Anda harus memberikan izin akun layanan katalog Lakehouse untuk menemukan dan mengizinkan koneksi melalui Service Directory.
Konsol
Di konsol Google Cloud , buka halaman IAM.
Klik Grant Access (atau Add).
Di kolom New principals, masukkan email akun layanan katalog Lakehouse. Anda dapat mengambil email ini dengan mendeskripsikan katalog (lihat tab
gcloud).Di dropdown Role, pilih Service Directory Viewer (
roles/servicedirectory.viewer).Klik Add another role, lalu pilih Service Directory PSC Authorized Service (
roles/servicedirectory.pscAuthorizedService).Klik Simpan.
gcloud CLI
Berikan peran yang diperlukan ke akun layanan katalog:
# 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"
Memverifikasi koneksi
Pastikan siklus refresh metadata latar belakang katalog berhasil diselesaikan dan namespace disinkronkan.
Pastikan status refresh menunjukkan keberhasilan:
gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Pastikan database jarak jauh muncul sebagai namespace yang disinkronkan:
gcloud alpha biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"