

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
<a name="snowflake-data-source"></a>

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
<a name="snowflake-data-source-prerequisites"></a>

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](working-with-domains-users.md) dan [DataZone Proyek dan lingkungan Amazon](working-with-projects.md).
+ 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
<a name="snowflake-data-source-step1"></a>

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 SNOWFLAKE`diperlukan 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
<a name="snowflake-data-source-step2"></a>

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
<a name="snowflake-data-source-step3"></a>

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
```

`58cjkfdsjfd`adalah 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
<a name="snowflake-data-source-step4"></a>

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
<a name="snowflake-data-source-connection-properties"></a>


| 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
<a name="snowflake-data-source-verify"></a>

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