View a markdown version of this page

Connect Snowflake sebagai sumber data di Amazon DataZone - Amazon DataZone

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Connect Snowflake sebagai sumber data di Amazon DataZone

Amazon DataZone mendukung Snowflake sebagai sumber data pihak ketiga. Setelah Anda menghubungkan Snowflake ke DataZone proyek Amazon, katalog dapat mengindeks database dan skema Snowflake Anda, menangkap garis keturunan tingkat kolom dari riwayat kueri Snowflake, dan memungkinkan Anda menanyakan tabel Snowflake dari federasi. Halaman ini memandu Anda melalui pembuatan koneksi Snowflake menggunakan CLI AWS .

Prasyarat

Sebelum Anda mulai, konfirmasikan hal-hal berikut sudah ada:

  • DataZone Domain Amazon dan proyek tempat Anda ingin data Snowflake dikatalogkan. Lihat Domain dan akses pengguna di Amazon DataZone dan DataZone Proyek dan lingkungan Amazon.

  • Akun Snowflake, dengan izin untuk membuat peran dan memberikan hak istimewa dalam database, skema, dan gudang yang ingin Anda katalogkan.

  • Akses ke AWS Secrets Manager AWS akun yang sama dengan DataZone domain Amazon Anda.

  • Bucket Amazon S3 untuk tumpahan kueri, jika Anda berencana untuk menanyakan data Snowflake dari.

Anda akan melakukan langkah-langkah dalam urutan ini: membuat peran Snowflake, menyimpan kredenal Snowflake di, AWS Secrets Manager menemukan ID lingkungan DataZone proyek Amazon Anda, lalu panggil. aws datazone create-connection

Langkah 1: Buat peran Snowflake untuk Amazon DataZone

Amazon DataZone terhubung ke Snowflake menggunakan peran yang Anda buat dan memberikan hak istimewa khusus. Hibah peran terbagi dalam empat kategori:

  • Sinkronisasi metadata — Amazon DataZone membaca struktur tabel dan tampilan Anda untuk mengisi katalog.

  • Sinkronisasi garis keturunan - Amazon DataZone membaca QUERY_HISTORY dan ACCESS_HISTORY Snowflake untuk mendapatkan garis keturunan tingkat kolom.

  • Akses kueri — diperlukan untuk kueri yang dikeluarkan melalui Amazon DataZone, termasuk dari.

  • Penggunaan gudang - diperlukan untuk kueri apa pun yang dijalankan peran.

Jalankan pernyataan berikut di Snowflake, ganti placeholder dengan nilai Anda:

CREATE ROLE <role_name>; -- Metadata: database and schema access GRANT USAGE ON DATABASE <database_name> TO ROLE <role_name>; GRANT USAGE ON SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Metadata: table and view structure (no data access) GRANT REFERENCES ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON ALL VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; GRANT REFERENCES ON FUTURE VIEWS IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Lineage: access to QUERY_HISTORY and ACCESS_HISTORY GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE <role_name>; -- Query access GRANT SELECT ON ALL TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Optional: include tables created after the role is granted GRANT SELECT ON FUTURE TABLES IN SCHEMA <database_name>.<schema_name> TO ROLE <role_name>; -- Warehouse access GRANT USAGE ON WAREHOUSE <warehouse_name> TO ROLE <role_name>; -- Assign the role to the Snowflake user whose credentials DataZone will use GRANT ROLE <role_name> TO USER <snowflake_username>;
penting

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKEdiperlukan untuk garis keturunan. Tanpa itu, sinkronisasi metadata berhasil tetapi tidak ada catatan garis keturunan yang ditangkap.

Langkah 2: Simpan kredensi Snowflake di AWS Secrets Manager

Buat rahasia di AWS Secrets Manager, di AWS akun yang sama dengan DataZone domain Amazon Anda. Amazon DataZone mendukung dua metode otentikasi: nama pengguna dan kata sandi, atau pasangan kunci.

Untuk otentikasi nama pengguna dan kata sandi, gunakan badan JSON ini:

{ "username": "<snowflake_username>", "password": "<snowflake_password>" }

Untuk otentikasi pasangan kunci, gunakan badan JSON ini:

{ "sfUser": "<snowflake_username>", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" }

Tandai rahasianya agar Amazon DataZone dapat menemukannya. Kedua tag diperlukan:

Tombol tanda Nilai
AmazonDataZoneDomain ID DataZone domain Amazon Anda
AmazonDataZoneProject ID DataZone proyek Amazon Anda

Perhatikan ARN rahasianya. Anda akan meneruskannya create-connection pada Langkah 4.

Langkah 3: Temukan ID lingkungan proyek Anda

Panggilan create-connection API memerlukan ID lingkungan proyek tempat koneksi berada. Anda dapat memperoleh ini dari peran pengguna proyek ARN.

Peran pengguna proyek ARN mengikuti pola ini:

arn:aws:iam::<account_id>:role/datazone_usr_role_<project_id>_<environment_id>

Segmen terakhir, setelah garis bawah terakhir, adalah ID lingkungan. Misalnya, di:

arn:aws:iam::123456789012:role/datazone_usr_role_a1b2c3dfadsf_58cjkfdsjfd

58cjkfdsjfdadalah ID lingkungan. Ini adalah nilai yang harus dilewati seperti --environment-identifier pada Langkah 4. ID lingkungan sesuai dengan lingkungan Tooling proyek Anda.

Langkah 4: Buat koneksi Snowflake

Jalankan perintah AWS CLI berikut, ganti placeholder dengan nilai Anda:

aws datazone create-connection \ --domain-identifier <domain_id> \ --environment-identifier <environment_id> \ --name "<connection_name>" \ --description "<optional_description>" \ --props '{ "snowflakeProperties": { "connectivityProperties": { "connectionProperties": { "HOST": "<account>.snowflakecomputing.com", "PORT": "443", "DATABASE": "<database_name>", "WAREHOUSE": "<warehouse_name>", "SCHEMA": "<schema_name>", "ROLE_ARN": "<project_user_role_arn>", "CATALOG_CASING_FILTER": "UPPERCASE_ONLY" }, "athenaProperties": { "spill_bucket": "<project_s3_bucket_name>", "spill_prefix": "<domain_id>/<project_id>/dev/sys/athena" }, "authenticationConfiguration": { "authenticationType": "BASIC", "secretArn": "<secret_arn_from_step_2>" } }, "snowflakeRole": "<role_name_from_step_1>", "identityMapping": { "usernameAttribute": "EMAIL" } } }'

Referensi properti koneksi

Properti Deskripsi
HOST URL akun Snowflake Anda.
PORT Pelabuhan Snowflake. Gunakan 443.
DATABASE Database Snowflake untuk katalog.
WAREHOUSE Gudang Snowflake yang DataZone digunakan Amazon untuk menjalankan kueri.
SCHEMA Skema Snowflake untuk katalog.
ROLE_ARN Peran pengguna proyek ARN (lihat Langkah 3).
CATALOG_CASING_FILTER Mengontrol normalisasi kasus untuk pengidentifikasi yang dikatalogkan. Nilai yang valid adalah UPPERCASE_ONLY dan LOWERCASE_ONLY. Jika dihilangkan, default ke. UPPERCASE_ONLY
spill_bucket Nama bucket S3 untuk tumpahan kueri. Diperlukan saat menanyakan Snowflake dari.
spill_prefix Awalan S3 untuk tumpahan, dalam format. <domain_id>/<project_id>/dev/sys/athena
authenticationType BASICuntuk username/password atau otentikasi pasangan kunci.
secretArn ARN rahasia yang dibuat pada Langkah 2.
snowflakeRole Nama peran Snowflake dari Langkah 1.
identityMapping.usernameAttribute Setel keEMAIL.

Memverifikasi koneksi

Panggilan aws datazone get-connection dengan ID domain Anda dan pengenal koneksi yang dikembalikan olehcreate-connection. Setelah sinkronisasi metadata pertama dijalankan, tabel Snowflake yang dikatalogkan muncul di katalog Amazon untuk proyek tersebut. DataZone