

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

# Konektor Amazon Athena DynamoDB
<a name="connectors-dynamodb"></a>

Konektor Amazon Athena DynamoDB memungkinkan Amazon Athena untuk berkomunikasi dengan DynamoDB sehingga Anda dapat mengkueri tabel Anda dengan SQL. Operasi tulis seperti [INSERT INTO](insert-into.md) tidak didukung.

Konektor ini dapat didaftarkan dengan Glue Data Catalog sebagai katalog federasi. Ini mendukung kontrol akses data yang didefinisikan dalam Lake Formation di katalog, database, tabel, kolom, baris, dan tingkat tag. Konektor ini menggunakan Glue Connections untuk memusatkan properti konfigurasi di Glue.

Jika Anda mengaktifkan Lake Formation di akun Anda, peran IAM untuk konektor Lambda federasi Athena yang Anda gunakan di harus memiliki akses baca di AWS Serverless Application Repository Lake Formation ke. AWS Glue Data Catalog

## Prasyarat
<a name="connectors-dynamodb-prerequisites"></a>
+ Menyebarkan konektor ke Anda Akun AWS menggunakan konsol Athena atau. AWS Serverless Application Repository Untuk informasi selengkapnya, lihat [Buat koneksi sumber data](connect-to-a-data-source.md) atau [Gunakan AWS Serverless Application Repository untuk menyebarkan konektor sumber data](connect-data-source-serverless-app-repo.md).

## Batasan
<a name="connectors-dynamodb-limitations"></a>

Jika Anda memigrasikan koneksi DynamoDB Anda ke Glue Catalog dan Lake Formation, hanya tabel huruf kecil dan nama kolom yang akan dikenali. 

## Parameter
<a name="connectors-dynamodb-parameters"></a>

Gunakan parameter di bagian ini untuk mengkonfigurasi konektor DynamoDB.

### AWS Glue Data Catalog konektor federasi
<a name="ddb-gc"></a>

Kami menyarankan Anda mengkonfigurasi konektor DynamoDB dengan menggunakan objek koneksi Glue. Untuk melakukan ini, atur variabel `glue_connection` lingkungan dari konektor DynamoDB Lambda ke nama koneksi Glue yang akan digunakan.

**Properti koneksi lem**

Gunakan perintah berikut untuk mendapatkan skema untuk objek koneksi Glue. Skema ini berisi semua parameter yang dapat Anda gunakan untuk mengontrol koneksi Anda.

```
aws glue describe-connection-type --connection-type DYNAMODB
```

**Properti lingkungan Lambda**

Properti lingkungan Lambda berikut hanya berlaku ketika Anda menggunakan konektor dengan fungsi Lambda di akun Anda.

**glue\_connection** - Menentukan nama koneksi Glue yang terkait dengan konektor federasi. 

**catatan**  
Semua konektor yang menggunakan koneksi AWS Glue Data Catalog federasi harus digunakan AWS Secrets Manager untuk menyimpan kredensil.
Konektor DynamoDB yang dibuat menggunakan AWS Glue Data Catalog koneksi federasi tidak mendukung penggunaan handler multiplexing.
Konektor DynamoDB yang dibuat menggunakan koneksi federasi AWS Glue Data Catalog hanya mendukung 2. `ConnectionSchemaVersion`

### Konektor federasi katalog data Athena
<a name="ddb-legacy"></a>

**catatan**  
Konektor sumber data Athena dibuat pada 3 Desember 2024 dan kemudian menggunakan koneksi. AWS Glue 

Nama parameter dan definisi yang tercantum di bawah ini adalah untuk konektor sumber data Athena yang dibuat tanpa koneksi Glue terkait. Gunakan parameter berikut hanya jika Anda [secara manual menerapkan](connect-data-source-serverless-app-repo.md) versi sebelumnya dari konektor sumber data Athena atau ketika `glue_connection` properti lingkungan tidak ditentukan.

**Properti lingkungan Lambda**
+ **spill\_bucket** - Menentukan bucket Amazon S3 untuk data yang melebihi batas fungsi Lambda.
+ **spill\_prefix** — (Opsional) Default ke subfolder dalam nama yang ditentukan. `spill_bucket` `athena-federation-spill` Kami menyarankan Anda mengonfigurasi [siklus hidup penyimpanan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) Amazon S3 di lokasi ini untuk menghapus tumpahan yang lebih lama dari jumlah hari atau jam yang telah ditentukan sebelumnya.
+ **spill\_put\_request\_headers** — (Opsional) Peta header permintaan dan nilai yang disandikan JSON untuk permintaan Amazon S3 yang digunakan untuk menumpahkan (misalnya,). `putObject` `{"x-amz-server-side-encryption" : "AES256"}` Untuk kemungkinan header lainnya, lihat [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)di *Referensi API Amazon Simple Storage Service*.
+ **kms\_key\_id** — (Opsional) Secara default, data apa pun yang tumpah ke Amazon S3 dienkripsi menggunakan mode enkripsi yang diautentikasi AES-GCM dan kunci yang dihasilkan secara acak. Agar fungsi Lambda Anda menggunakan kunci enkripsi yang lebih kuat yang dihasilkan oleh KMS seperti`a7e63k4b-8loc-40db-a2a1-4d0en2cd8331`, Anda dapat menentukan ID kunci KMS.
+ **disable\_spill\_encryption** — (Opsional) Ketika diatur ke, menonaktifkan enkripsi tumpahan. `True` Defaultnya `False` sehingga data yang tumpah ke S3 dienkripsi menggunakan AES-GCM — baik menggunakan kunci yang dihasilkan secara acak atau KMS untuk menghasilkan kunci. [Menonaktifkan enkripsi tumpahan dapat meningkatkan kinerja, terutama jika lokasi tumpahan Anda menggunakan enkripsi sisi server.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)
+ **disable\_glue** — (Opsional) Jika ada dan disetel ke true, konektor tidak mencoba untuk mengambil metadata tambahan dari. AWS Glue
+ **glue\_catalog** [- (Opsional) Gunakan opsi ini untuk menentukan katalog lintas akun. AWS Glue](data-sources-glue-cross-account.md) Secara default, konektor mencoba untuk mendapatkan metadata dari akunnya sendiri AWS Glue .
+ **disable\_projection\_and\_casing** - (Opsional) Menonaktifkan proyeksi dan casing. Gunakan jika Anda ingin menanyakan tabel DynamoDB yang memiliki casing di nama kolom mereka dan Anda tidak ingin menentukan properti di `columnMapping` meja Anda. AWS Glue 

  `disable_projection_and_casing`Parameter menggunakan nilai-nilai berikut untuk menentukan perilaku pemetaan casing dan kolom:
  + **auto** - Menonaktifkan proyeksi dan casing ketika tipe yang sebelumnya tidak didukung terdeteksi dan pemetaan nama kolom tidak diatur di atas meja. Ini adalah pengaturan default.
  + **selalu** — Menonaktifkan proyeksi dan casing tanpa syarat. Ini berguna ketika Anda memiliki casing di nama kolom DynamoDB Anda tetapi tidak ingin menentukan pemetaan nama kolom apa pun.

  Saat menggunakan `disable_projection_and_casing` parameter, ingatlah poin-poin berikut:
  + Penggunaan parameter dapat menghasilkan penggunaan bandwidth yang lebih tinggi. Selain itu, jika fungsi Lambda Anda tidak sama AWS Region dengan sumber data Anda, Anda akan dikenakan biaya transfer AWS lintas wilayah standar yang lebih tinggi sebagai akibat dari penggunaan bandwidth yang lebih tinggi. Untuk informasi selengkapnya tentang biaya transfer lintas wilayah, lihat [Biaya Transfer AWS Data untuk Arsitektur Server dan Tanpa Server](https://aws.amazon.com/blogs/apn/aws-data-transfer-charges-for-server-and-serverless-architectures/) di Blog Jaringan Mitra. AWS 
  + Karena jumlah byte yang lebih besar ditransfer dan karena jumlah byte yang lebih besar memerlukan waktu deserialisasi yang lebih tinggi, latensi keseluruhan dapat meningkat. 

## Menyiapkan database dan tabel di AWS Glue
<a name="connectors-dynamodb-setting-up-databases-and-tables-in-aws-glue"></a>

Karena kemampuan inferensi skema bawaan konektor terbatas, Anda mungkin ingin menggunakannya AWS Glue untuk metadata. Untuk melakukan ini, Anda harus memiliki database dan tabel di AWS Glue. Untuk mengaktifkannya untuk digunakan dengan DynamoDB, Anda harus mengedit properti mereka.

**Untuk mengedit properti database di AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, perluas **Katalog Data**, lalu pilih **Database**.

   Pada halaman **Database**, Anda dapat mengedit database yang ada, atau memilih **Tambah database** untuk membuatnya.

1. Dalam daftar database, pilih tautan untuk database yang ingin Anda edit.

1. Pilih **Edit**.

1. Pada halaman **Perbarui database**, di bawah **pengaturan Database**, untuk **Lokasi**, tambahkan string**dynamo-db-flag**. Kata kunci ini menunjukkan bahwa database berisi tabel yang digunakan konektor DynamoDB Athena untuk metadata tambahan dan diperlukan untuk database selain. AWS Glue `default` `dynamo-db-flag`Properti ini berguna untuk menyaring database dalam akun dengan banyak database.

1. Pilih **Perbarui Database**.

**Untuk mengedit properti tabel di AWS Glue konsol**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, perluas **Katalog Data**, lalu pilih **Tabel**.

1. Pada halaman **Tabel**, dalam daftar tabel, pilih nama tertaut tabel yang ingin Anda edit.

1. Pilih **Tindakan**, **Edit tabel**.

1. Pada halaman **Edit tabel**, di bagian **properti Tabel**, tambahkan properti tabel berikut sesuai kebutuhan. Jika Anda menggunakan crawler AWS Glue DynamoDB, properti ini diatur secara otomatis.
   + **dynamodb** - String yang menunjukkan ke konektor DynamoDB Athena bahwa tabel dapat digunakan untuk metadata tambahan. Masukkan `dynamodb` string dalam properti tabel di bawah bidang yang disebut **klasifikasi** (sama persis).
**catatan**  
Halaman **Setel properti tabel** yang merupakan bagian dari proses pembuatan tabel di AWS Glue konsol memiliki bagian **Format data** dengan bidang **Klasifikasi**. Anda tidak dapat masuk atau memilih `dynamodb` di sini. Sebagai gantinya, setelah Anda membuat tabel, ikuti langkah-langkah untuk mengedit tabel dan untuk memasukkan `classification` dan `dynamodb` sebagai pasangan kunci-nilai di bagian **Properti tabel**.
   + **SourceTable** - Properti tabel opsional yang mendefinisikan nama tabel sumber di DynamoDB. Gunakan ini jika aturan penamaan AWS Glue tabel mencegah Anda membuat AWS Glue tabel dengan nama yang sama dengan tabel DynamoDB Anda. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue tabel, tetapi mereka diizinkan dalam nama tabel DynamoDB.
   + **ColumnMapping** - Properti tabel opsional yang mendefinisikan pemetaan nama kolom. Gunakan ini jika aturan penamaan AWS Glue kolom mencegah Anda membuat AWS Glue tabel dengan nama kolom yang sama dengan tabel DynamoDB Anda. Misalnya, huruf kapital tidak diizinkan dalam nama AWS Glue kolom tetapi diizinkan dalam nama kolom DynamoDB. Nilai properti diharapkan dalam format Col1 = Col1, Col2 = Col2. Perhatikan bahwa pemetaan kolom hanya berlaku untuk nama kolom tingkat atas dan bukan untuk bidang bersarang.
   + **defaultTimeZone**- Properti tabel opsional yang diterapkan ke `date` atau `datetime` nilai yang tidak memiliki zona waktu eksplisit. Menyetel nilai ini adalah praktik yang baik untuk menghindari perbedaan antara zona waktu default sumber data dan zona waktu sesi Athena.
   + **datetimeFormatMapping**- Properti tabel opsional yang menentukan `date` atau `datetime` format yang akan digunakan saat mengurai data dari kolom AWS Glue `date` atau tipe `timestamp` data. Jika properti ini tidak ditentukan, konektor mencoba [menyimpulkan](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateFormatUtils.html) format ISO-8601. Jika konektor tidak dapat menyimpulkan `date` atau `datetime` memformat atau mengurai string mentah, maka nilainya dihilangkan dari hasilnya. 

     `datetimeFormatMapping`Nilainya harus dalam format`col1=someformat1,col2=someformat2`. Berikut ini adalah beberapa contoh format:

     ```
     yyyyMMdd'T'HHmmss 
     ddMMyyyy'T'HH:mm:ss
     ```

     Jika kolom Anda memiliki `date` atau `datetime` nilai tanpa zona waktu dan Anda ingin menggunakan kolom dalam `WHERE` klausa, atur `datetimeFormatMapping` properti untuk kolom tersebut.

1. Jika Anda menentukan kolom secara manual, pastikan Anda menggunakan tipe data yang sesuai. Jika Anda menggunakan crawler, validasi kolom dan jenis yang ditemukan crawler.

1. Pilih **Simpan**.

## Izin yang Diperlukan
<a name="connectors-dynamodb-required-permissions"></a>

Untuk detail lengkap tentang kebijakan IAM yang diperlukan konektor ini, tinjau `Policies` bagian file [athena-dynamodb.yaml](https://github.com/awslabs/aws-athena-query-federation/blob/master/athena-dynamodb/athena-dynamodb.yaml). Daftar berikut merangkum izin yang diperlukan.
+ **Akses tulis Amazon S3** - Konektor memerlukan akses tulis ke lokasi di Amazon S3 untuk menumpahkan hasil dari kueri besar.
+ **Athena GetQueryExecution** — Konektor menggunakan izin ini untuk gagal cepat ketika kueri Athena hulu telah dihentikan.
+ **AWS Glue Data Catalog**- Konektor DynamoDB memerlukan akses baca saja ke untuk mendapatkan informasi AWS Glue Data Catalog skema.
+ **CloudWatch Log** — Konektor memerlukan akses ke CloudWatch Log untuk menyimpan log.
+ Akses **baca DynamoDB** — Konektor menggunakan `DescribeTable` operasi`ListSchemas`,,, `ListTables``Query`, `Scan` dan API.

## Performa
<a name="connectors-dynamodb-performance"></a>

Konektor DynamoDB Athena mendukung pemindaian paralel dan mencoba menekan predikat sebagai bagian dari kueri DynamoDB. Predikat kunci hash dengan nilai `X` yang berbeda menghasilkan panggilan `X` kueri ke DynamoDB. Semua skenario predikat lainnya menghasilkan `Y` jumlah panggilan pemindaian, di mana `Y` ditentukan secara heuristik berdasarkan ukuran tabel Anda dan throughput yang disediakan. Namun, memilih subset kolom terkadang menghasilkan runtime eksekusi kueri yang lebih lama.

`LIMIT`klausa dan predikat sederhana ditekan ke bawah dan dapat mengurangi jumlah data yang dipindai dan akan menyebabkan penurunan waktu eksekusi kueri. 

### Klausul LIMIT
<a name="connectors-dynamodb-performance-limit-clauses"></a>

`LIMIT N`Pernyataan mengurangi data yang dipindai oleh kueri. Dengan `LIMIT N` pushdown, konektor hanya mengembalikan `N` baris ke Athena.

### Predikat
<a name="connectors-dynamodb-performance-predicates"></a>

Predikat adalah ekspresi dalam `WHERE` klausa kueri SQL yang mengevaluasi nilai Boolean dan menyaring baris berdasarkan beberapa kondisi. Untuk meningkatkan fungsionalitas, dan untuk mengurangi jumlah data yang dipindai, konektor DynamoDB Athena dapat menggabungkan ekspresi ini dan mendorongnya langsung ke DynamoDB.

Operator konektor DynamoDB Athena berikut mendukung pushdown predikat:
+ **Boolean:** DAN
+ **KESETARAAN: SAMA, NOT\_EQUAL**, LESS\_THAN, LESS\_THAN\_OR\_EQUAL, GREATER\_THAN, GREATER\_THAN\_OR\_EQUAL, IS\_NULL

### Contoh pushdown gabungan
<a name="connectors-dynamodb-performance-pushdown-example"></a>

Untuk kemampuan kueri yang ditingkatkan, gabungkan jenis pushdown, seperti pada contoh berikut:

```
SELECT *
FROM my_table
WHERE col_a > 10 and col_b < 10
LIMIT 10
```

*Untuk artikel tentang penggunaan pushdown predikat untuk meningkatkan kinerja dalam kueri federasi, termasuk DynamoDB, [lihat Meningkatkan kueri federasi dengan pushdown predikat di Amazon](https://aws.amazon.com/blogs/big-data/improve-federated-queries-with-predicate-pushdown-in-amazon-athena/) Athena di Blog Big Data.AWS *

## Kueri passthrough
<a name="connectors-dynamodb-passthrough-queries"></a>

Konektor DynamoDB [mendukung kueri passthrough](federated-query-passthrough.md) dan menggunakan sintaks PartiQL. Operasi [GetItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)DynamoDB API tidak didukung. *Untuk informasi tentang menanyakan DynamoDB menggunakan PartiQL, [lihat pernyataan pilih PartiQL untuk DynamoDB di Panduan Pengembang Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-reference.select.html).*

Untuk menggunakan kueri passthrough dengan DynamoDB, gunakan sintaks berikut:

```
SELECT * FROM TABLE(
        system.query(
            query => '{{query_string}}'
        ))
```

Contoh kueri passthrough DynamoDB berikut menggunakan PartiQL untuk mengembalikan daftar perangkat Fire TV Stick yang memiliki properti selambat-lambatnya 12/24/22. `DateWatched`

```
SELECT * FROM TABLE(
        system.query(
           query => 'SELECT Devices 
                       FROM WatchList 
                       WHERE Devices.FireStick.DateWatched[0] > '12/24/22''
        ))
```

## Pemecahan masalah
<a name="connectors-dynamodb-troubleshooting"></a>

### Beberapa filter pada kolom kunci sortir
<a name="connectors-dynamodb-troubleshooting-sort-key-filters"></a>

**Pesan kesalahan**: hanya KeyConditionExpressions boleh berisi satu kondisi per kunci

**Penyebab**: Masalah ini dapat terjadi di mesin Athena versi 3 dalam kueri yang memiliki filter batas bawah dan atas pada kolom kunci sortir DynamoDB. Karena DynamoDB tidak mendukung lebih dari satu kondisi filter pada kunci pengurutan, kesalahan muncul ketika konektor mencoba menekan kueri yang kedua kondisi diterapkan.

**Solusi**: Perbarui konektor ke versi 2023.11.1 atau yang lebih baru. Untuk petunjuk tentang memperbarui konektor, lihat[Perbarui konektor sumber data](connectors-updating.md).

## Biaya
<a name="connectors-dynamodb-costs"></a>

Biaya untuk penggunaan konektor tergantung pada AWS sumber daya yang mendasari yang digunakan. Karena kueri yang menggunakan pemindaian dapat menggunakan sejumlah besar [unit kapasitas baca (RCUs)](https://aws.amazon.com/dynamodb/pricing/provisioned/), pertimbangkan informasi untuk [harga Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/) dengan cermat.

## Sumber daya tambahan
<a name="connectors-dynamodb-additional-resources"></a>
+ *Untuk pengenalan penggunaan konektor DynamoDB Amazon Athena, lihat [Akses, kueri, dan bergabung dengan tabel Amazon DynamoDB menggunakan Athena dalam panduan Pola Panduan Preskriptif](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/access-query-and-join-amazon-dynamodb-tables-using-athena.html).AWS * 
+ [Untuk artikel tentang cara menggunakan konektor Athena DynamoDB untuk menanyakan data di DynamoDB dengan SQL dan memvisualisasikan wawasan di Quick, lihat *AWS posting Blog Big Data Visualisasikan wawasan Amazon DynamoDB dengan Cepat menggunakan konektor Amazon Athena DynamoDB* dan. AWS Glue](https://aws.amazon.com/blogs/big-data/visualize-amazon-dynamodb-insights-in-amazon-quicksight-using-the-amazon-athena-dynamodb-connector-and-aws-glue/) 
+ [Untuk artikel tentang penggunaan konektor Amazon Athena DynamoDB dengan Amazon DynamoDB, Athena, dan Quick untuk membuat dasbor tata kelola sederhana, lihat tabel Amazon DynamoDB *lintas akun Big Data Blog AWS Post Query menggunakan Amazon Athena Federated Query*.](https://aws.amazon.com/blogs/big-data/query-cross-account-amazon-dynamodb-tables-using-amazon-athena-federated-query/)
+ Untuk informasi tambahan tentang konektor ini, kunjungi [situs terkait](https://github.com/awslabs/aws-athena-query-federation/tree/master/athena-dynamodb) GitHub di.com.