Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Akses, kueri, dan gabungkan tabel Amazon DynamoDB menggunakan Athena
Moinul Al-Mamun, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara mengatur koneksi antara Amazon Athena dan Amazon DynamoDB dengan menggunakan konektor Amazon Athena DynamoDB. Konektor menggunakan fungsi AWS Lambda untuk menanyakan data di DynamoDB. Anda tidak perlu menulis kode apa pun untuk mengatur koneksi. Setelah koneksi dibuat, Anda dapat dengan cepat mengakses dan menganalisis tabel DynamoDB dengan menggunakan Athena Federated Query untuk menjalankan perintah SQL dari Athena. Anda juga dapat menggabungkan satu atau beberapa tabel DynamoDB satu sama lain atau ke sumber data lain, seperti Amazon Redshift atau Amazon Aurora.
Prasyarat dan batasan
Prasyarat
Akun AWS aktif dengan izin untuk mengelola tabel DynamoDB, sumber Data Athena, Lambda, dan AWS Identity and Access Management (IAM)
Bucket Amazon Simple Storage Service (Amazon S3) tempat Athena dapat menyimpan hasil kueri
Bucket S3 tempat Konektor DynamoDB Athena dapat menyimpan data dalam jangka pendek
Wilayah AWS yang mendukung mesin Athena versi 2
Izin IAM untuk mengakses Athena dan bucket S3 yang diperlukan
Konektor Amazon Athena DynamoDB
, diinstal
Batasan
Ada biaya untuk menanyakan tabel DynamoDB. Ukuran tabel melebihi beberapa gigabyte (GBs) dapat menimbulkan biaya tinggi. Kami menyarankan Anda mempertimbangkan biaya sebelum melakukan operasi SCAN tabel penuh. Untuk informasi selengkapnya, lihat harga Amazon DynamoDBSELECT * FROM table1 LIMIT 10). Selain itu, sebelum Anda melakukan kueri JOIN atau GROUP BY di lingkungan produksi, pertimbangkan ukuran tabel Anda. Jika tabel Anda terlalu besar, pertimbangkan opsi alternatif seperti memigrasikan tabel ke Amazon
Arsitektur
Diagram berikut menunjukkan bagaimana pengguna dapat menjalankan query SQL pada tabel DynamoDB dari Athena.

Diagram menunjukkan alur kerja berikut:
Untuk menanyakan tabel DynamoDB, pengguna menjalankan kueri SQL dari Athena.
Athena memulai fungsi Lambda.
Fungsi Lambda menanyakan data yang diminta dalam tabel DynamoDB.
DynamoDB mengembalikan data yang diminta ke fungsi Lambda. Kemudian, fungsi mentransfer hasil kueri ke pengguna melalui Athena.
Fungsi Lambda menyimpan data di bucket S3.
Tumpukan teknologi
Amazon Athena
Amazon DynamoDB
Amazon S3
AWS Lambda
Alat
Amazon Athena adalah layanan kueri interaktif yang membantu Anda menganalisis data secara langsung di Amazon S3 dengan menggunakan SQL standar.
Amazon Athena DynamoDB Connector
adalah alat AWS yang memungkinkan Athena terhubung dengan DynamoDB dan mengakses tabel Anda dengan menggunakan kueri SQL. Amazon DynamoDB adalah layanan database NoSQL yang dikelola sepenuhnya yang menyediakan kinerja yang cepat, dapat diprediksi, dan dapat diskalakan.
AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat tabel sampel pertama. |
| Developer |
Masukkan data sampel ke dalam tabel pertama. |
| Developer |
Buat tabel sampel kedua. |
| Developer |
Masukkan data sampel ke dalam tabel kedua. |
| Developer |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan konektor sumber data. | Buat sumber data untuk DynamoDB, lalu buat fungsi Lambda untuk terhubung ke sumber data tersebut.
| Developer |
Verifikasi bahwa fungsi Lambda dapat mengakses bucket tumpahan S3. |
Jika Anda mengalami kesalahan, lihat bagian Informasi tambahan dalam pola ini untuk panduan. | Developer |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kueri tabel DynamoDB. |
| Developer |
Bergabunglah dengan dua tabel DynamoDB. | DynamoDB adalah penyimpanan data NoSQL dan tidak mendukung operasi gabungan SQL. Akibatnya, Anda harus melakukan operasi gabungan pada dua tabel DynamoDB:
| Developer |
Sumber daya terkait
Konektor DynamoDB Amazon Athena (AWS Labs)
Kueri sumber data apa pun dengan kueri federasi baru Amazon Athena
(AWS Big Data Blog) Referensi versi mesin Athena (Panduan Pengguna Athena)
Sederhanakan ekstraksi dan analisis data Amazon DynamoDB dengan menggunakan AWS Glue dan Amazon Athena (AWS
Database Blog)
Informasi tambahan
Jika Anda menjalankan kueri di Athena dengan spill_bucket dalam {bucket_name}/folder_name/ format, maka Anda dapat menerima pesan galat berikut:
"GENERIC_USER_ERROR: Encountered an exception[java.lang.RuntimeException] from your LambdaFunction[arn:aws:lambda:us-east-1:xxxxxx:function:testdynamodb] executed in context[retrieving meta-data] with message[You do NOT own the spill bucket with the name: s3://amzn-s3-demo-bucket/athena_dynamodb_spill_data/] This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: [query-id]"
Untuk mengatasi kesalahan ini, perbarui variabel lingkungan fungsi Lambda spill_bucket ke{bucket_name_only}, lalu perbarui kebijakan IAM Lambda berikut untuk akses tulis bucket:
{ "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectAcl", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::spill_bucket", "arn:aws:s3:::spill_bucket/*" ], "Effect": "Allow" }
Atau, Anda dapat menghapus konektor sumber data Athena yang Anda buat sebelumnya, dan membuatnya kembali dengan menggunakan hanya untuk. {bucket_name} spill_bucket