Menyiapkan koneksi lintas cloud untuk Snowflake Horizon Catalog

Koneksi lintas cloud ke Snowflake Horizon 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 mengelola akses ke data gabungan di Lakehouse tanpa batas.

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. Memahami cara menggunakan secret Secret Manager regional. Hal ini diperlukan untuk menyiapkan Lakehouse dengan Snowflake Horizon Catalog menggunakan autentikasi berbasis secret.
  5. Opsional: Jika Anda berencana merutekan kueri melalui interkoneksi pribadi antara VPC Google Cloud dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS), pastikan Anda memiliki akun aktif dengan penyedia jarak jauh, sediakan Dedicated Cross-Cloud Interconnect atau Partner Cross-Cloud Interconnect, buat sesi BGP dengan Cloud Router, dan verifikasi bahwa Anda memiliki izin IAM yang diperlukan di kedua lingkungan cloud.
  6. 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.
  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the BigLake, Secret Manager APIs, if any are 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 APIs

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

  10. Enable the BigLake, Secret Manager APIs, if any are 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 APIs

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan akses 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.

  • Penyedia Cloud yang Didukung untuk Cross-Cloud Interconnect: 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.
  • Pemilihan rute jaringan: Jika interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI) tidak dikonfigurasi, kueri akan dirutekan melalui internet publik. Hal ini dapat mengakibatkan biaya traffic keluar yang lebih tinggi dari penyedia cloud jarak jauh dan performa yang kurang dapat diprediksi.
  • Tabel yang didukung Snowflake Horizon Catalog: Hanya tabel Snowflake Iceberg yang disinkronkan ke Lakehouse. Tabel native Snowflake diabaikan selama pemuatan ulang metadata.
  • Kebijakan jaringan dan alamat IP egress: Saat mengkueri akun Snowflake, Lakehouse mengandalkan alamat IP egress infrastruktur global untuk menjangkau endpoint Snowflake yang terhubung ke internet. Egress berasal dari rentang infrastruktur Google yang luas. Di cloud jarak jauh, gunakan goog.json untuk mengizinkan rentang alamat IP egress Google dalam kebijakan jaringan Snowflake Anda.
  • 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, tetapi pemuatan ulang berikutnya akan dijadwalkan pada interval berikutnya. Kueri menggunakan metadata katalog yang paling baru disinkronkan, sehingga perubahan yang dibuat di katalog jarak jauh, seperti tabel baru, update skema, atau data yang baru di-commit, tidak akan terlihat di Lakehouse hingga pemuatan ulang metadata latar belakang berikutnya selesai.
  • Caching Lakehouse: Caching Lakehouse diaktifkan secara otomatis untuk semua kueri lintas cloud guna menghemat biaya egress dengan menyimpan blok data secara lokal di Google Cloud. Kunci enkripsi yang dikelola pelanggan (CMEK) tidak didukung untuk caching; data yang di-cache dienkripsi menggunakan Google-owned and Google-managed encryption keys. Jika batasan kebijakan organisasi constraints/gcp.restrictNonCmekServices diterapkan pada tabel mana pun dalam kueri, caching akan otomatis dinonaktifkan untuk kueri tersebut. Untuk mengetahui informasi selengkapnya, lihat Caching cerdas.
  • Residensi dan kepatuhan data: Membuat katalog atau koneksi gabungan di region Google Cloud akan menyimpan data dalam penyimpanan yang di-cache di region target tersebut. Jika data cloud jarak jauh Anda berada di wilayah hukum yang berbeda, pastikan caching lintas region mematuhi persyaratan residensi data dan kepatuhan terhadap peraturan organisasi Anda.

Alur kerja umum

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

  • Siapkan Cross-Cloud Interconnect (Opsional): Konfigurasikan koneksi pribadi antara VPC Google Cloud dan penyedia cloud jarak jauh Anda.
  • Menyiapkan penggabungan: Konfigurasikan autentikasi dan buat katalog gabungan di Lakehouse.
    • Autentikasi berbasis secret (PAT): Buat secret di Secret Manager dengan kredensial katalog jarak jauh Anda. Kemudian, buat katalog gabungan di Lakehouse dan beri akun layanan katalog akses ke secret.
    • Workload Identity Federation (WIF): Buat katalog gabungan di Lakehouse yang menentukan peran Snowflake yang diperlukan. Kemudian, tautkan ID akun layanan katalog ke pengguna layanan di Snowflake. Pengguna layanan Snowflake harus memiliki izin penggunaan di Snowflake Horizon Catalog jarak jauh.
  • Verifikasi koneksi: Pastikan Lakehouse dapat berhasil terhubung ke katalog jarak jauh Anda.
  • Membuat kueri data: Jalankan kueri terhadap data gabungan Anda menggunakan BigQuery atau Managed Service untuk Apache Spark. Caching lakehouse diaktifkan secara otomatis untuk kueri guna menghemat biaya egress. Untuk mengetahui informasi selengkapnya, lihat Membuat kueri data jarak jauh.
  • Mengonfigurasi izin: Gunakan IAM untuk mengelola siapa yang dapat melihat dan membuat kueri 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. Tindakan 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 Google Cloud dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS):

Buat sesi BGP antara Cloud Router 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 (misalnya, bucket AWS Amazon S3) melalui interkoneksi pribadi. Ada dua alur arsitektur yang dapat Anda ikuti untuk mengonfigurasi pemilihan rute ini:

  • Pemilihan rute Load Balancer Jaringan proxy regional internal: Alur ini menggunakan Load Balancer Jaringan proxy regional internalGoogle Cloud untuk mendistribusikan permintaan di seluruh Grup Endpoint Jaringan (NEG) Konektivitas Hybrid yang mengarah ke beberapa Elastic Network Interface (ENI) AWS. Alur ini 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.
  • Pemilihan rute endpoint langsung: Alur ini menghubungkan Direktori Layanan 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 regional internal

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):

  1. Di konsol AWS VPC, buat Endpoint Antarmuka untuk Amazon S3.
  2. Untuk nama layanan, tentukan com.amazonaws.AWS_REGION.s3.
  3. Pilih VPC dan subnet yang terhubung melalui Direct Connect ke VPC Google Cloud Anda.
  4. Lampirkan Grup Keamanan ke endpoint untuk mengontrol akses masuk.
  5. Tindakan ini akan menyediakan Elastic Network Interface (ENI) di setiap subnet yang dipilih. Catat alamat IP pribadi ENI ini.

Selanjutnya, konfigurasikan Grup Keamanan:

  • Pastikan Grup Keamanan yang terpasang ke ENI Endpoint Amazon S3 mengizinkan traffic TCP masuk di port 443 dari VPC Google Cloud Anda. Rentang ini harus mencakup rentang CIDR Google Cloud subnet khusus proxy Anda untuk mengizinkan health check dan traffic yang diteruskan.

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).
  1. Buat 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: 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 AWS ENI Anda ke NEG hybrid 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 (ENI) Amazon S3 AWS di zona tersebut.

    Ulangi perintah ini untuk membuat NEG dan menambahkan endpoint untuk zona lain jika ENI AWS Anda didistribusikan di beberapa 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 yang harus ditangani 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 ILB di Direktori Layanan, sehingga Lakehouse dapat menemukannya.

  1. 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: Project ID Google Cloud Anda.
    • REGION: region Google Cloud . Contoh, us-east4. Region ini harus sama dengan region katalog gabungan.
  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.
  3. 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 Direktori Layanan agar merutekan traffic langsung ke satu alamat IP Endpoint VPC Antarmuka AWS, ikuti langkah-langkah berikut:

  1. Buat Endpoint VPC Antarmuka untuk Amazon S3 di dalam VPC AWS Anda. Catat alamat IP dan port endpoint ini.
  2. 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: Project ID Google Cloud Anda.
    • REGION: region Google Cloud . Contoh, us-east4. Region ini harus sama dengan region katalog gabungan.
  3. 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.
  4. 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 Anda. Contoh, 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 Snowflake Horizon Catalog jarak jauh.

Mengonfigurasi autentikasi

Federasi memerlukan konfigurasi kredensial atau peran untuk mengakses Snowflake Horizon Catalog jarak jauh. Pilih salah satu metode berikut.

Berbasis secret (PAT)

Opsi ini menggunakan token akses terprogram (PAT) yang disimpan dengan aman menggunakan secret Secret Manager regional.

  1. Buat token akses terprogram (PAT) yang memiliki akses baca ke katalog target.

  2. Buat file JSON bernama credentials.json dengan payload Anda:

    {
      "client_secret": "SNOWFLAKE_PAT_TOKEN",
      "scope": "session:role:SNOWFLAKE_ROLE"
    }

    Ganti kode berikut:

    • SNOWFLAKE_PAT_TOKEN: Token Akses Terprogram (PAT) Snowflake Anda.
    • SNOWFLAKE_ROLE: Peran Snowflake tertentu yang diperlukan untuk sesi. Contoh, ICEBERG_VIEW.
  3. Konfigurasikan endpoint regional untuk Secret Manager:

    Secara default, Secret Manager menggunakan endpoint global. Namun, Lakehouse mengharuskan secret Anda disimpan di region yang sama dengan katalog Lakehouse Anda. Untuk berinteraksi dengan secret regional menggunakan gcloud CLI, Anda harus mengganti endpoint API default untuk sesi atau profil Anda saat ini.

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/

    Ganti kode berikut:

    • REGION: Region Google Cloud tempat secret Secret Manager Anda disimpan. Contohnya, us-east4. Untuk menghindari masalah konektivitas, secret dan katalog Anda harus dibuat di region yang sama.
  4. Upload payload ke Secret Manager:

    gcloud secrets create SNOWFLAKE_SECRET_NAME \
      --location="REGION" \
      --project="PROJECT_ID" \
      --data-file=credentials.json

    Ganti kode berikut:

    • SNOWFLAKE_SECRET_NAME: Nama untuk secret Snowflake Anda.
    • PROJECT_ID: Project ID Google Cloud Anda.

Workload Identity Federation

Workload Identity Federation (WIF) menghindari penggunaan secret yang berumur panjang dengan menautkan akun layanan katalog Lakehouse langsung ke pengguna layanan Snowflake. Tidak ada penyiapan prasyarat. Lanjutkan dengan membuat katalog gabungan.

Membuat katalog gabungan

Buat katalog gabungan menggunakan konsol Google Cloud atau gcloud CLI.

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 Snowflake (Horizon).

  5. Untuk Data location, pilih region Lakehouse tempat Anda ingin membuat katalog gabungan. Contoh, us-east4. Untuk meminimalkan latensi (bahkan melalui internet publik), lakukan hal berikut saat memilih region:

    • Jika Snowflake Horizon Catalog Anda berada di AWS, pilih Google Cloud region yang paling dekat dengan region AWS Anda.
    • Jika Snowflake Horizon Catalog Anda berada di Google Cloud, pilih region yang sama persis.
  6. Klik Lanjutkan.

    Bagian Connection details akan muncul.

  7. Di bagian Remote catalog details, di kolom Snowflake account identifier, masukkan ID akun Snowflake Anda. Misalnya: my_org-my_account

  8. Di kolom Snowflake warehouse, masukkan nama warehouse Snowflake Anda. Nama ini juga dikenal sebagai nama database di Snowflake Horizon Catalog.

  9. Pilih opsi untuk Metode Autentikasi:

    • Untuk Secret, masukkan nama secret Anda untuk Secret-based (PAT). Gunakan format berikut: projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME.
    • Untuk OIDC, masukkan peran Snowflake Anda untuk Workload Identity Federation. Misalnya: ICEBERG_VIEW
  10. Opsional: Di kolom Service directory name, masukkan jalur ke layanan Direktori Layanan Anda. Contoh: projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME. Langkah ini hanya diperlukan jika Anda mengonfigurasi interkoneksi pribadi (Cross-Cloud Interconnect).

  11. Klik Create.

gcloud

Berbasis secret (PAT)

Jika menggunakan autentikasi berbasis secret, Anda harus menentukan --secret-name.

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="snowflake" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME" \
    --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \
    --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

Milik pelanggan (CCI)

Jika Anda mengonfigurasi interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI), berikan referensi layanan Direktori Layanan.

gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="snowflake" \
    --secret-name="projects/PROJECT_ID/locations/REGION/secrets/SNOWFLAKE_SECRET_NAME" \
    --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \
    --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/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.
  • SNOWFLAKE_SECRET_NAME: nama secret Snowflake Anda.
  • SNOWFLAKE_ACCOUNT_IDENTIFIER: ID akun Snowflake Anda.
  • SNOWFLAKE_WAREHOUSE: warehouse Snowflake yang ingin Anda gabungkan. Nama ini juga dikenal sebagai nama database di Snowflake Horizon Catalog.
  • REFRESH_INTERVAL: Opsional: Menentukan seberapa sering refresh metadata latar belakang berjalan. Tetapkan nilai ini sebagai durasi, misalnya, 330s atau 5m30s.
  • NAMESPACE_FILTERS: Opsional: Daftar namespace yang dipisahkan koma untuk digabungkan. Contoh, ns1,ns2. Jika dihilangkan, semua namespace akan disertakan.
  • Jika Anda menggunakan interkoneksi pribadi (CCI):
    • SERVICE_DIRECTORY_NAMESPACE: namespace Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.
    • SERVICE_NAME: nama layanan Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.

Workload Identity Federation

Jika Anda menggunakan Workload Identity Federation, Anda harus menentukan --snowflake-role.

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="snowflake" \
    --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \
    --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \
    --snowflake-role="SNOWFLAKE_ROLE" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS"

Milik pelanggan (CCI)

Jika Anda mengonfigurasi interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI), berikan referensi layanan Direktori Layanan.

gcloud alpha biglake iceberg catalogs create FEDERATED_CATALOG_NAME \
    --project="PROJECT_ID" \
    --primary-location="REGION" \
    --catalog-type="federated" \
    --federated-catalog-type="snowflake" \
    --snowflake-account-identifier="SNOWFLAKE_ACCOUNT_IDENTIFIER" \
    --snowflake-warehouse="SNOWFLAKE_WAREHOUSE" \
    --snowflake-role="SNOWFLAKE_ROLE" \
    --refresh-interval="REFRESH_INTERVAL" \
    --namespace-filters="NAMESPACE_FILTERS" \
    --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/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.
  • SNOWFLAKE_ACCOUNT_IDENTIFIER: ID akun Snowflake Anda.
  • SNOWFLAKE_WAREHOUSE: warehouse Snowflake yang ingin Anda gabungkan. Nama ini juga dikenal sebagai nama database di Snowflake Horizon Catalog.
  • SNOWFLAKE_ROLE: peran Snowflake tertentu yang diperlukan untuk sesi. Contoh, ICEBERG_VIEW.
  • REFRESH_INTERVAL: Menentukan seberapa sering pembaruan metadata latar belakang dijalankan. Tetapkan nilai ini sebagai durasi, misalnya, 330s atau 5m30s.
  • NAMESPACE_FILTERS: Opsional: Daftar namespace yang dipisahkan koma untuk digabungkan. Contoh, ns1,ns2. Jika dihilangkan, semua namespace akan disertakan.
  • Jika Anda menggunakan interkoneksi pribadi (CCI):
    • SERVICE_DIRECTORY_NAMESPACE: namespace Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.
    • SERVICE_NAME: nama layanan Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.

Menyelesaikan penyiapan autentikasi

Selesaikan proses autentikasi menggunakan jenis autentikasi yang Anda pilih.

Berbasis secret (PAT)

Saat katalog dibuat, Lakehouse menyediakan akun layanan unik untuk katalog tersebut (ditampilkan sebagai biglake-service-account dalam deskripsi resource).

Anda harus memberikan izin kepada akun layanan ini untuk mengakses secret yang Anda buat sebelumnya. Perhatikan bahwa penerapan kebijakan IAM dapat memerlukan waktu beberapa menit.

Beri akun layanan katalog izin untuk mengakses secret:

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets add-iam-policy-binding SNOWFLAKE_SECRET_NAME \
  --project="PROJECT_ID" \
  --location="REGION" \
  --member="serviceAccount:$(gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID" \
      --format='value(biglake-service-account)')" \
  --role="roles/secretmanager.secretAccessor"

Untuk memverifikasi bahwa akun layanan katalog gabungan memiliki akses ke secret, jalankan perintah berikut:

gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
gcloud secrets get-iam-policy SNOWFLAKE_SECRET_NAME \
    --project="PROJECT_ID" \
    --location="REGION"

Dalam output, pastikan akun layanan biglake-service-account memiliki peran roles/secretmanager.secretAccessor yang ditetapkan kepadanya.

Workload Identity Federation

Setelah membuat katalog, Anda harus menautkan identitas akun layanannya ke pengguna layanan di Snowflake.

  1. Ekstrak Lakehouse Service Account ID (Subject) dari detail katalog.

    Anda bisa mendapatkan ini dari respons JSON perintah pembuatan (kolom biglake-service-account-id).

    Atau, Anda dapat menjalankan perintah describe pada katalog untuk mendapatkan nilainya:

    gcloud alpha biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \
      --project="PROJECT_ID"

    Cari biglake-service-account-id di output.

  2. Login ke instance pengelolaan Snowflake Anda dan jalankan skrip berikut untuk membangun hubungan kepercayaan dengan identitas layanan Lakehouse:

    USE ROLE ACCOUNTADMIN;
    
    CREATE USER SNOWFLAKE_SERVICE_USER
      TYPE = SERVICE
      WORKLOAD_IDENTITY = (
        TYPE = GCP
        SUBJECT = 'LAKEHOUSE_SERVICE_ACCOUNT_ID'
      )
      DEFAULT_ROLE = SNOWFLAKE_ROLE
      COMMENT = 'Service user for Lakehouse federation over WIF';
    
    -- Also explicitly GRANT permissions to the role
    GRANT ROLE SNOWFLAKE_ROLE TO USER SNOWFLAKE_SERVICE_USER;

    Ganti kode berikut:

    • SNOWFLAKE_SERVICE_USER: nama untuk pengguna layanan baru di Snowflake.
    • LAKEHOUSE_SERVICE_ACCOUNT_ID: ID akun layanan yang diekstrak di langkah sebelumnya.
    • SNOWFLAKE_ROLE: peran Snowflake (harus cocok dengan peran yang ditentukan selama pembuatan katalog).

Menyelesaikan penyiapan interkoneksi pribadi (khusus Cross-Cloud Interconnect)

Jika Anda merutekan traffic melalui interkoneksi pribadi (CCI Khusus atau Partner), Anda harus memberikan izin kepada akun layanan katalog Lakehouse untuk menemukan dan mengizinkan koneksi melalui 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 dan pilih Service Directory PSC Authorized Service (roles/servicedirectory.pscAuthorizedService).

  6. Klik Simpan.

gcloud

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 serta tabel disinkronkan.

  1. Pastikan status refresh menunjukkan keberhasilan:

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

    gcloud alpha biglake iceberg namespaces list \
      --project="PROJECT_ID" \
      --catalog="FEDERATED_CATALOG_NAME"
  3. Pastikan tabel dalam namespace disinkronkan:

    gcloud alpha biglake iceberg tables list \
      --project="PROJECT_ID" \
      --catalog="FEDERATED_CATALOG_NAME" \
      --namespace="NAMESPACE_ID"

Langkah berikutnya