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