

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

# Koneksi kepingan salju
<a name="aws-glue-programming-etl-connect-snowflake-home"></a>

Anda dapat menggunakan AWS Glue for Spark untuk membaca dan menulis ke tabel di Snowflake di AWS Glue 4.0 dan versi yang lebih baru. Anda dapat membaca dari Snowflake dengan query SQL. Anda dapat terhubung ke Snowflake menggunakan pengguna dan kata sandi. Anda dapat merujuk ke kredensil Snowflake yang disimpan melalui AWS Secrets Manager Katalog Data Glue AWS . Katalog Data Kredensil Kepingan Salju untuk AWS Glue for Spark disimpan secara terpisah dari kredenal Kepingan Salju Katalog Data untuk perayap. Anda harus memilih `SNOWFLAKE` jenis koneksi dan bukan jenis koneksi yang `JDBC` dikonfigurasi untuk terhubung ke Snowflake.

Untuk informasi lebih lanjut tentang Snowflake, lihat situs web [Snowflake](https://www.snowflake.com/). Untuk informasi selengkapnya tentang Snowflake AWS, lihat [Snowflake Data Warehouse di Amazon Web Services](https://aws.amazon.com/financial-services/partner-solutions/snowflake/).

## Mengkonfigurasi koneksi Snowflake
<a name="aws-glue-programming-etl-connect-snowflake-configure"></a>

Tidak ada AWS prasyarat untuk menghubungkan ke database Snowflake yang tersedia melalui internet.

Secara opsional, Anda dapat melakukan konfigurasi berikut untuk mengelola kredensil koneksi Anda dengan Glue. AWS 

**Untuk mengelola kredensi koneksi Anda dengan Glue AWS**

1. Di Snowflake, buat pengguna, *snowflakeUser* dan kata sandi,. *snowflakePassword* 

1. Di AWS Secrets Manager, buat rahasia menggunakan kredensi Snowflake Anda. Untuk membuat rahasia di Secrets Manager, ikuti tutorial yang tersedia di [Buat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html#create_secret_cli) dalam AWS Secrets Manager dokumentasi. Setelah membuat rahasia, simpan nama Rahasia, *secretName* untuk langkah selanjutnya. 
   + Saat memilih **pasangan kunci/nilai**, buat pasangan *snowflakeUser* dengan kunci. `USERNAME`
   + Saat memilih **pasangan kunci/nilai**, buat pasangan *snowflakePassword* dengan kunci. `PASSWORD`
   + Saat memilih **pasangan kunci/nilai**, Anda dapat memberikan kunci kepada gudang Snowflake Anda. `sfWarehouse`
   + Saat memilih **pasangan kunci/nilai**, Anda dapat memberikan properti koneksi Snowflake tambahan menggunakan nama properti Spark yang sesuai sebagai kunci. Properti yang didukung meliputi:
     + `sfDatabase`- Nama database Snowflake
     + `sfSchema`- Nama skema kepingan salju
     + `sfRole`- Nama peran kepingan salju
     + `pem_private_key`- Kunci pribadi untuk otentikasi pasangan kunci

1. Dalam AWS Glue Data Catalog, buat koneksi dengan memilih **Connections**, lalu **Create Connection**. Mengikuti langkah-langkah di wizard koneksi untuk menyelesaikan proses: 
   + **Saat memilih **sumber Data**, pilih Snowflake, lalu pilih Berikutnya.**
   + Masukkan detail koneksi seperti host dan port. Saat memasukkan URL **Snowflake host, berikan URL** instance Snowflake Anda. URL biasanya akan menggunakan nama host dalam formulir`account_identifier.snowflakecomputing.com`. Namun, format URL dapat bervariasi tergantung pada jenis akun Snowflake Anda (misalnya, Azure AWS, atau Snowflake yang dihosting).
   + Saat memilih peran layanan IAM, pilih dari menu tarik-turun. Ini adalah peran IAM dari akun Anda yang akan digunakan untuk mengakses AWS Secrets Manager dan menetapkan IP jika VPC ditentukan.
   + Saat memilih **AWS Rahasia**, berikan*secretName*.

1. Pada langkah berikutnya dalam wizard, atur properti untuk koneksi Snowflake Anda. 

1. Pada langkah terakhir di wizard, tinjau pengaturan Anda dan kemudian selesaikan proses untuk membuat koneksi Anda.

Dalam situasi berikut, Anda mungkin memerlukan yang berikut:
+ 

  Untuk Snowflake yang dihosting AWS di VPC Amazon
  + Anda akan memerlukan konfigurasi VPC Amazon yang sesuai untuk Snowflake. Untuk informasi selengkapnya tentang cara mengonfigurasi VPC Amazon Anda, lihat [AWS PrivateLink & Snowflake di dokumentasi Snowflake](https://docs.snowflake.com/en/user-guide/admin-security-privatelink).
  + Anda akan memerlukan konfigurasi Amazon VPC yang sesuai untuk Glue AWS . [Mengkonfigurasi titik akhir VPC antarmuka () untuk AWS PrivateLink() AWS GlueAWS PrivateLink](vpc-interface-endpoints.md).
  + Anda perlu membuat koneksi AWS Glue Data Catalog yang menyediakan informasi koneksi Amazon VPC (selain id AWS Secrets Manager rahasia yang mendefinisikan kredenal keamanan Snowflake Anda). URL Anda akan berubah saat menggunakan AWS PrivateLink, seperti yang dijelaskan dalam dokumentasi Snowflake yang ditautkan di item sebelumnya.
  + Anda akan memerlukan konfigurasi pekerjaan Anda termasuk koneksi Katalog Data sebagai **koneksi jaringan tambahan**.

## Membaca dari tabel Snowflake
<a name="aws-glue-programming-etl-connect-snowflake-read"></a>

**Prasyarat:** Meja Kepingan Salju yang ingin Anda baca. Anda akan membutuhkan nama tabel Snowflake,. *tableName* Anda akan memerlukan url*snowflakeUrl*, nama pengguna, *snowflakeUser* dan kata sandi Snowflake Anda. *snowflakePassword* Jika pengguna Snowflake Anda tidak memiliki set namespace default, Anda akan memerlukan nama database Snowflake, dan nama skema. *databaseName* *schemaName* Selain itu, jika pengguna Snowflake Anda tidak memiliki set gudang default, Anda akan memerlukan nama gudang. *warehouseName*

Contoh:

**Prasyarat Tambahan:** Selesaikan langkah-langkah *Untuk mengelola kredensil koneksi Anda dengan Glue AWS untuk* mengonfigurasi, dan. *snowflakeUrl* *snowflakeUsername* *snowflakePassword* Untuk meninjau langkah-langkah ini, lihat[Mengkonfigurasi koneksi Snowflake](#aws-glue-programming-etl-connect-snowflake-configure), bagian sebelumnya. Untuk memilih yang mana **Koneksi jaringan tambahan** untuk terhubung, kami akan menggunakan `connectionName` parameter.

```
snowflake_read = glueContext.create_dynamic_frame.from_options(
  connection_type="snowflake",
  connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableName",
        "sfDatabase": "databaseName",
        "sfSchema": "schemaName",
        "sfWarehouse": "warehouseName",
    }
)
```

 Selain itu, Anda dapat menggunakan `query` parameter `autopushdown` dan untuk membaca sebagian dari tabel Snowflake. Ini bisa jauh lebih efisien daripada memfilter hasil Anda setelah dimuat ke Spark. Pertimbangkan contoh di mana semua penjualan disimpan dalam tabel yang sama, tetapi Anda hanya perlu menganalisis penjualan dari toko tertentu pada hari libur. Jika informasi tersebut disimpan dalam tabel, Anda dapat menggunakan predikat pushdown untuk mengambil hasil sebagai berikut:

```
snowflake_node = glueContext.create_dynamic_frame.from_options(
    connection_type="snowflake",
    connection_options={
        "autopushdown": "on",
        "query": "select * from sales where store='1' and IsHoliday='TRUE'",
        "connectionName": "snowflake-glue-conn",
        "sfDatabase": "databaseName",
        "sfSchema": "schemaName",
        "sfWarehouse": "warehouseName",
    }
)
```

## Menulis ke tabel Snowflake
<a name="aws-glue-programming-etl-connect-snowflake-write"></a>

**Prasyarat:** Database Snowflake yang ingin Anda tulis. Anda akan memerlukan nama tabel saat ini atau yang diinginkan,*tableName*. Anda akan memerlukan url*snowflakeUrl*, nama pengguna, *snowflakeUser* dan kata sandi Snowflake Anda. *snowflakePassword* Jika pengguna Snowflake Anda tidak memiliki set namespace default, Anda akan memerlukan nama database Snowflake, dan nama skema. *databaseName* *schemaName* Selain itu, jika pengguna Snowflake Anda tidak memiliki set gudang default, Anda akan memerlukan nama gudang. *warehouseName*

Contoh:

**Prasyarat Tambahan:** Selesaikan langkah-langkah *Untuk mengelola kredensil koneksi Anda dengan Glue AWS untuk* mengonfigurasi, dan. *snowflakeUrl* *snowflakeUsername* *snowflakePassword* Untuk meninjau langkah-langkah ini, lihat[Mengkonfigurasi koneksi Snowflake](#aws-glue-programming-etl-connect-snowflake-configure), bagian sebelumnya. Untuk memilih yang mana **Koneksi jaringan tambahan** untuk terhubung, kami akan menggunakan `connectionName` parameter.

```
glueContext.write_dynamic_frame.from_options(
    connection_type="snowflake",
    connection_options={
        "connectionName": "connectionName",
        "dbtable": "tableName",
        "sfDatabase": "databaseName",
        "sfSchema": "schemaName",
        "sfWarehouse": "warehouseName",
    },
)
```

## Referensi opsi koneksi kepingan salju
<a name="aws-glue-programming-etl-connect-snowflake-reference"></a>

Jenis koneksi Snowflake mengambil opsi koneksi berikut:

Anda dapat mengambil beberapa parameter di bagian ini dari koneksi Katalog Data (`sfUrl`,,`sfPassword`)`sfUser`, dalam hal ini Anda tidak diharuskan untuk menyediakannya. Anda dapat melakukan ini dengan memberikan parameter`connectionName`.

Anda dapat mengambil parameter koneksi dari AWS Secrets Manager rahasia menggunakan `secretId` parameter. Saat menggunakan Secrets Manager, properti Spark berikut dapat diambil secara otomatis jika ada dalam rahasia:
+ `sfUser`(menggunakan kunci `USERNAME` atau`sfUser`)
+ `sfPassword`(menggunakan kunci `PASSWORD` atau`sfPassword`)
+ `sfWarehouse`(menggunakan kunci`sfWarehouse`)
+ `sfDatabase`(menggunakan kunci`sfDatabase`)
+ `sfSchema`(menggunakan kunci`sfSchema`)
+ `sfRole`(menggunakan kunci`sfRole`)
+ `pem_private_key`(menggunakan kunci`pem_private_key`)

**Urutan Prioritas Properti:** Ketika properti yang sama ditentukan di beberapa lokasi, AWS Glue menggunakan urutan prioritas berikut (tertinggi ke terendah):

1. Opsi koneksi yang disediakan secara eksplisit dalam kode pekerjaan Anda

1. Properti koneksi Katalog Data

1. AWS Secrets Manager nilai rahasia (kapan `secretId` ditentukan)

1. Default pengguna Snowflake

Parameter berikut digunakan secara umum saat menghubungkan ke Snowflake.
+ `sfDatabase`— Diperlukan jika default pengguna tidak diatur di Snowflake. Digunakan untuk Baca/Tulis. Database yang akan digunakan untuk sesi setelah menghubungkan.
+ `sfSchema`— Diperlukan jika default pengguna tidak diatur di Snowflake. Digunakan untuk Baca/Tulis. Skema yang digunakan untuk sesi setelah menghubungkan.
+ `sfWarehouse`— Diperlukan jika default pengguna tidak diatur di Snowflake. Digunakan untuk Baca/Tulis. Gudang virtual default untuk digunakan untuk sesi setelah menghubungkan.
+ `sfRole`— Diperlukan jika default pengguna tidak diatur di Snowflake. Digunakan untuk Baca/Tulis. Peran keamanan default yang digunakan untuk sesi setelah menghubungkan.
+ `sfUrl`— (Wajib) Digunakan untuk Baca/Tulis. Menentukan nama host untuk akun Anda dalam format berikut:. `account_identifier.snowflakecomputing.com` Untuk informasi selengkapnya tentang pengenal akun, lihat [Pengidentifikasi Akun di dokumentasi](https://docs.snowflake.com/en/user-guide/admin-account-identifier) Snowflake.
+ `sfUser`— (Wajib) Digunakan untuk Baca/Tulis. Nama login untuk pengguna Snowflake.
+ `sfPassword`— (Diperlukan kecuali `pem_private_key` disediakan) Digunakan untuk Baca/Tulis. Kata sandi untuk pengguna Snowflake.
+ `dbtable`— Diperlukan saat bekerja dengan tabel lengkap. Digunakan untuk Baca/Tulis. Nama tabel yang akan dibaca atau tabel tempat data ditulis. Saat membaca, semua kolom dan catatan diambil.
+ `pem_private_key`— Digunakan untuk Membaca/Menulis. String kunci pribadi yang dikodekan b64 yang tidak terenkripsi. Kunci pribadi untuk pengguna Snowflake. Adalah umum untuk menyalin ini dari file PEM. Untuk informasi selengkapnya, lihat [Autentikasi pasangan kunci dan rotasi pasangan kunci](https://docs.snowflake.com/en/user-guide/key-pair-auth) dalam dokumentasi Snowflake.
+ `query`— Diperlukan saat membaca dengan kueri. Digunakan untuk Baca. Kueri (`SELECT`pernyataan) yang tepat untuk dijalankan

Opsi berikut digunakan untuk mengonfigurasi perilaku tertentu selama proses menghubungkan ke Snowflake.
+ `preactions`— Digunakan untuk Membaca/Menulis. Nilai Valid: Titik koma dipisahkan daftar pernyataan SQL sebagai String. Pernyataan SQL dijalankan sebelum data ditransfer antara AWS Glue dan Snowflake. Jika pernyataan berisi`%s`, diganti dengan nama tabel direferensikan untuk operasi. `%s`
+ `postactions`— Digunakan untuk Membaca/Menulis. Pernyataan SQL dijalankan setelah data ditransfer antara AWS Glue dan Snowflake. Jika pernyataan berisi`%s`, diganti dengan nama tabel direferensikan untuk operasi. `%s`
+ `autopushdown`— Default:`"on"`. Nilai yang Valid:`"on"`,`"off"`. Parameter ini mengontrol apakah pushdown kueri otomatis diaktifkan. Jika pushdown diaktifkan, maka ketika kueri dijalankan di Spark, jika bagian dari kueri dapat “didorong ke bawah” ke server Snowflake, itu didorong ke bawah. Ini meningkatkan kinerja beberapa kueri. Untuk informasi tentang apakah kueri Anda dapat ditekan ke bawah, lihat [Pushdown](https://docs.snowflake.com/en/user-guide/spark-connector-use#pushdown) di dokumentasi Snowflake.

Selain itu, beberapa opsi yang tersedia pada konektor Snowflake Spark mungkin didukung di Glue. AWS Untuk informasi selengkapnya tentang opsi yang tersedia di konektor Snowflake Spark, lihat [Mengatur Opsi Konfigurasi untuk Konektor](https://docs.snowflake.com/en/user-guide/spark-connector-use#setting-configuration-options-for-the-connector) dalam dokumentasi Snowflake. 

## Metode otentikasi kepingan salju
<a name="aws-glue-programming-etl-connect-snowflake-authentication"></a>

AWS Glue mendukung metode otentikasi berikut untuk menghubungkan ke Snowflake:
+ **Otentikasi Nama Pengguna dan Kata Sandi:** Menyediakan `sfUser` dan `sfPassword` parameter.
+ **Otentikasi Pasangan Kunci:** Menyediakan `sfUser` dan parameter. `pem_private_key` Saat menggunakan otentikasi pasangan kunci, `sfPassword` parameter tidak diperlukan.

Kedua metode otentikasi didukung penuh dan dapat dikonfigurasi menggunakan kombinasi opsi koneksi, koneksi Katalog Data, atau AWS Secrets Manager rahasia.

## Keterbatasan konektor kepingan salju
<a name="aws-glue-programming-etl-connect-snowflake-limitations"></a>

Menghubungkan ke Snowflake dengan AWS Glue for Spark tunduk pada batasan berikut. 
+ Konektor ini tidak mendukung bookmark pekerjaan. Untuk informasi selengkapnya tentang bookmark pekerjaan, lihat[Melacak data yang diproses menggunakan bookmark pekerjaan](monitor-continuations.md).
+ Konektor ini tidak mendukung Snowflake membaca dan menulis melalui tabel di Katalog Data AWS Glue menggunakan metode `create_dynamic_frame.from_catalog` dan`write_dynamic_frame.from_catalog`.
+ Konektor ini mendukung username/password otentikasi dan otentikasi pasangan kunci. Metode otentikasi lain (seperti OAuth atau SALL) saat ini tidak didukung.
+ Konektor ini tidak didukung dalam pekerjaan streaming.
+ Konektor ini mendukung query berbasis `SELECT` pernyataan saat mengambil informasi (seperti dengan `query` parameter). Jenis kueri lainnya (seperti`SHOW`,`DESC`, atau pernyataan DHTML) tidak didukung.
+ Snowflake membatasi ukuran teks kueri (yaitu pernyataan SQL) yang dikirimkan melalui klien Snowflake hingga 1 MB per pernyataan. Untuk detail selengkapnya, lihat [Batas Ukuran Teks Kueri](https://docs.snowflake.com/en/user-guide/query-size-limits).