Meminta ekspor tabel di DynamoDB - Amazon DynamoDB

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

Meminta ekspor tabel di DynamoDB

Ekspor tabel DynamoDB memungkinkan Anda mengekspor data tabel ke bucket Amazon S3, memungkinkan Anda melakukan analitik dan kueri kompleks pada data Anda menggunakan data lain AWS Layanan seperti Athena, AWS Glue, Amazon SageMaker, AmazonEMR, dan AWS Lake Formation. Anda dapat meminta ekspor tabel menggunakan AWS Management Console, AWS CLI, atau DynamoDBAPI.

catatan

Pemohon membayar bucket Amazon S3 tidak didukung.

DynamoDB mendukung ekspor penuh dan ekspor tambahan:

  • Dengan ekspor penuh, Anda dapat mengekspor snapshot lengkap tabel Anda dari titik waktu mana pun dalam jendela point-in-time recovery (PITR) ke bucket Amazon S3 Anda.

  • Dengan ekspor tambahan, Anda dapat mengekspor data dari tabel DynamoDB yang diubah, diperbarui, atau dihapus antara periode waktu tertentu, dalam jendela Anda, PITR ke bucket Amazon S3 Anda.

Prasyarat

Aktifkan PITR

Untuk menggunakan fitur ekspor ke S3, Anda harus mengaktifkan PITR di meja Anda. Untuk detail tentang cara mengaktifkanPITR, lihat oint-in-timePemulihan P. Jika Anda meminta ekspor untuk tabel yang belum PITR diaktifkan, permintaan Anda akan gagal dengan pesan pengecualian: “Terjadi kesalahan (PointInTimeRecoveryUnavailableException) saat memanggil ExportTableToPointInTime operasi: Pemulihan titik dalam waktu tidak diaktifkan untuk tabel 'my-dynamodb-table”.

Menyiapkan izin S3

Anda dapat mengekspor data tabel Anda ke setiap bucket Amazon S3 yang izinnya Anda miliki untuk menulis. Bucket tujuan tidak harus sama AWS Wilayah atau memiliki pemilik yang sama dengan pemilik tabel sumber. Klaster AWS Identity and Access Management (IAM) kebijakan harus memungkinkan Anda untuk dapat melakukan tindakan S3 (s3:AbortMultipartUpload,s3:PutObject, dans3:PutObjectAcl) dan tindakan ekspor DynamoDB (). dynamodb:ExportTableToPointInTime Berikut adalah contoh kebijakan sampel yang akan memberikan izin kepada pengguna Anda untuk melakukan ekspor ke bucket S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDynamoDBExportAction", "Effect": "Allow", "Action": "dynamodb:ExportTableToPointInTime", "Resource": "arn:aws:dynamodb:us-east-1:111122223333:table/my-table" }, { "Sid": "AllowWriteToDestinationBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::your-bucket/*" } ] }

Jika Anda perlu menulis ke bucket S3 yang ada di akun lain atau Anda tidak memiliki izin untuk menulis, pemilik bucket S3 harus menambahkan kebijakan bucket agar Anda dapat mengekspor dari DynamoDB ke bucket tersebut. Berikut adalah contoh kebijakan pada bucket S3 target.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleStatement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Dave" }, "Action": [ "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::awsexamplebucket1/*" } ] }

Mencabut izin ini saat ekspor sedang berlangsung akan mengakibatkan sebagian file.

catatan

Jika tabel atau bucket yang Anda ekspor dienkripsi dengan kunci yang dikelola pelanggan, kebijakan KMS kunci tersebut harus memberikan izin DynamoDB untuk menggunakannya. Izin ini diberikan melalui IAM Pengguna/Peran yang memicu pekerjaan ekspor. Untuk informasi selengkapnya tentang enkripsi termasuk praktik terbaik, lihat Cara DynamoDB menggunakan AWS KMSdan Menggunakan KMS kunci khusus.

Meminta ekspor menggunakan AWS Management Console

Contoh berikut menunjukkan cara menggunakan konsol DynamoDB untuk mengekspor tabel yang sudah ada bernama MusicCollection.

catatan

Prosedur ini mengasumsikan bahwa Anda telah mengaktifkan point-in-time pemulihan. Untuk mengaktifkannya untuk MusicCollection tabel, pada tab Ikhtisar tabel, di bagian Rincian tabel, pilih Aktifkan untuk oint-in-timepemulihan P.

Untuk meminta ekspor tabel
  1. Masuk ke AWS Management Console dan buka konsol DynamoDB di. https://console.aws.amazon.com/dynamodb/

  2. Di panel navigasi di sisi kiri konsol, pilih Ekspor ke S3.

  3. Pilih tombol Ekspor ke S3.

  4. Pilih tabel sumber dan bucket S3 tujuan. Jika bucket tujuan adalah milik akun Anda, Anda dapat menggunakan tombol Jelajahi S3 untuk menemukannya. Jika tidak, masukkan URL bucket menggunakan folder prefix is s3://bucketname/prefix format. an opsional untuk membantu menjaga bucket tujuan Anda tetap teratur.

  5. Pilih Ekspor penuh atau Ekspor tambahan. Ekspor penuh menghasilkan cuplikan tabel lengkap dari tabel Anda seperti pada titik waktu yang Anda tentukan. Ekspor tambahan menghasilkan perubahan yang dibuat pada tabel Anda selama periode ekspor yang ditentukan. Output Anda dipadatkan sehingga hanya berisi status akhir item dari periode ekspor. Item hanya akan muncul satu kali dalam ekspor meskipun memiliki beberapa pembaruan dalam periode ekspor yang sama.

    Full export
    1. Pilih titik waktu di mana Anda ingin mengekspor snapshot tabel lengkap. Ini bisa menjadi titik waktu apa pun di dalam PITR jendela. Atau, Anda dapat memilih Waktu saat ini untuk mengekspor snapshot terbaru.

    2. Untuk format file yang diekspor, pilih antara DynamoDB JSON dan Amazon Ion. Secara default, tabel Anda akan diekspor dalam format JSON DynamoDB dari waktu restorable terbaru di jendela pemulihan titik waktu dan dienkripsi menggunakan kunci Amazon S3 (-S3). SSE Anda dapat mengubah pengaturan ekspor ini jika perlu.

      catatan

      Jika Anda memilih untuk mengenkripsi ekspor Anda menggunakan kunci yang dilindungi oleh AWS Key Management Service (AWS KMS), kuncinya harus berada di Wilayah yang sama dengan bucket S3 tujuan.

    Incremental export
    1. Pilih Periode ekspor yang ingin Anda ekspor data tambahannya. Pilih waktu mulai di dalam PITR jendela. Durasi periode ekspor minimal harus 15 menit dan tidak lebih dari 24 jam. Waktu mulai periode ekspor bersifat inklusif dan waktu berakhirnya bersifat eksklusif.

    2. Pilih antara Mode absolut atau Mode relatif.

      1. Mode absolut akan mengekspor data tambahan untuk jangka waktu yang Anda tentukan.

      2. Mode relatif akan mengekspor data tambahan untuk periode ekspor yang relatif terhadap waktu pengiriman tugas ekspor Anda.

    3. Untuk format file yang diekspor, pilih antara DynamoDB JSON dan Amazon Ion. Secara default, tabel Anda akan diekspor dalam format JSON DynamoDB dari waktu restorable terbaru di jendela pemulihan titik waktu dan dienkripsi menggunakan kunci Amazon S3 (-S3). SSE Anda dapat mengubah pengaturan ekspor ini jika perlu.

      catatan

      Jika Anda memilih untuk mengenkripsi ekspor Anda menggunakan kunci yang dilindungi oleh AWS Key Management Service (AWS KMS), kuncinya harus berada di Wilayah yang sama dengan bucket S3 tujuan.

    4. Untuk Jenis tampilan ekspor, pilih Gambar baru dan lama atau Gambar baru saja. Gambar baru memberikan status terkini item. Gambar lama menunjukkan status item tepat sebelum “tanggal dan waktu mulai” yang ditentukan. Pengaturan defaultnya adalah Gambar baru dan lama. Untuk informasi selengkapnya tentang gambar baru dan gambar lama, lihat Output ekspor inkremental.

  6. Pilih Ekspor untuk memulai.

Data yang diekspor tidak konsisten secara transaksional. Operasi transaksi Anda dapat terpecah antara dua output ekspor. Subset item dapat dimodifikasi oleh operasi transaksi yang tercermin dalam ekspor, sementara subset modifikasi lain dalam transaksi yang sama tidak tercermin dalam permintaan ekspor yang sama. Namun, ekspor pada akhirnya konsisten. Jika transaksi terkoyak selama ekspor, Anda akan memiliki sisa transaksi di ekspor berikutnya yang berdekatan, tanpa duplikat. Jangka waktu yang digunakan untuk ekspor didasarkan pada jam sistem internal dan dapat bervariasi menurut satu menit jam lokal aplikasi Anda.

Mendapatkan detail tentang ekspor masa lalu di AWS Management Console

Anda dapat menemukan informasi tentang tugas ekspor yang pernah Anda jalankan di masa lalu dengan memilih bagian Ekspor ke S3 di bilah sisi navigasi. Bagian ini berisi daftar semua ekspor yang Anda buat dalam 90 hari terakhir. Pilih tugas ARN yang tercantum di tab Ekspor untuk mengambil informasi tentang ekspor tersebut, termasuk pengaturan konfigurasi lanjutan yang Anda pilih. Perhatikan bahwa meskipun metadata tugas ekspor akan kedaluwarsa setelah 90 hari dan tugas yang lebih lama dari itu tidak lagi ditemukan dalam daftar ini, objek di bucket S3 Anda tetap ada selama kebijakan bucketnya mengizinkan. DynamoDB tidak pernah menghapus objek apa pun yang dibuatnya di bucket S3 Anda selama ekspor.

Meminta ekspor menggunakan AWS CLI

Contoh berikut menunjukkan cara menggunakan AWS CLI untuk mengekspor tabel yang ada bernama MusicCollection ke bucket S3 yang disebutddb-export-musiccollection.

catatan

Prosedur ini mengasumsikan bahwa Anda telah mengaktifkan point-in-time pemulihan. Untuk mengaktifkannya untuk tabel MusicCollection, jalankan perintah berikut.

aws dynamodb update-continuous-backups \ --table-name MusicCollection \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
Full export

Perintah berikut mengekspor MusicCollection ke bucket S3 yang disebut ddb-export-musiccollection-9012345678 dengan prefiks 2020-Nov. Data tabel akan diekspor dalam format JSON DynamoDB dari waktu tertentu dalam jendela pemulihan titik waktu dan dienkripsi menggunakan kunci Amazon S3 (-S3). SSE

catatan

Jika meminta ekspor tabel lintas akun, pastikan untuk menyertakan opsi --s3-bucket-owner.

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection \ --s3-bucket ddb-export-musiccollection-9012345678 \ --s3-prefix 2020-Nov \ --export-format DYNAMODB_JSON \ --export-time 1604632434 \ --s3-bucket-owner 9012345678 \ --s3-sse-algorithm AES256
Incremental export

Perintah berikut melakukan ekspor tambahan dengan menyediakan --export-type dan --incremental-export-specification baru. Gantikan nilai Anda sendiri dengan apa pun yang dicetak miring. Waktu ditentukan sebagai detik sejak zaman.

aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:REGION:ACCOUNT:table/TABLENAME \ --s3-bucket BUCKET --s3-prefix PREFIX \ --incremental-export-specification ExportFromTime=1693569600,ExportToTime=1693656000,ExportViewType=NEW_AND_OLD_IMAGES \ --export-type INCREMENTAL_EXPORT
catatan

Jika Anda memilih untuk mengenkripsi ekspor Anda menggunakan kunci yang dilindungi oleh AWS Key Management Service (AWS KMS), kuncinya harus berada di Wilayah yang sama dengan bucket S3 tujuan.

Mendapatkan detail tentang ekspor masa lalu di AWS CLI

Anda dapat menemukan informasi tentang permintaan ekspor yang pernah Anda jalankan sebelumnya dengan menggunakan perintah list-exports. Perintah ini mengembalikan daftar semua ekspor yang Anda buat dalam 90 hari terakhir. Perhatikan bahwa meskipun metadata tugas ekspor akan kedaluwarsa setelah 90 hari dan tugas yang lebih lama dari itu tidak lagi dikembalikan oleh perintah list-exports, objek dalam bucket S3 Anda tetap ada selama kebijakan bucketnya mengizinkan. DynamoDB tidak pernah menghapus objek apa pun yang dibuatnya di bucket S3 Anda selama ekspor.

Ekspor memiliki status PENDING hingga berhasil atau gagal. Jika mereka berhasil, statusnya berubah menjadiCOMPLETED. Jika gagal, statusnya berubah FAILED dengan a failure_message danfailure_reason.

Dalam contoh berikut, kami menggunakan parameter table-arn opsional untuk mencantumkan ekspor tabel tertentu saja.

aws dynamodb list-exports \ --table-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog

Untuk mengambil informasi mendetail tentang tugas ekspor tertentu, termasuk pengaturan konfigurasi lanjutan, gunakan perintah describe-export.

aws dynamodb describe-export \ --export-arn arn:aws:dynamodb:us-east-1:123456789012:table/ProductCatalog/export/01234567890123-a1b2c3d4

Meminta ekspor menggunakan AWS SDK

Gunakan cuplikan kode ini untuk meminta ekspor tabel menggunakan AWS SDKpilihan Anda.

Python

Ekspor penuh

import boto3 from datetime import datetime # remove endpoint_url for real use client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/export_table_to_point_in_time.html client.export_table_to_point_in_time( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', ExportTime=datetime(2023, 9, 20, 12, 0, 0), S3Bucket='bucket', S3Prefix='prefix', S3SseAlgorithm='AES256', ExportFormat='DYNAMODB_JSON' )

Ekspor tambahan

import boto3 from datetime import datetime client = boto3.client('dynamodb') client.export_table_to_point_in_time( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', IncrementalExportSpecification={ 'ExportFromTime': datetime(2023, 9, 20, 12, 0, 0), 'ExportToTime': datetime(2023, 9, 20, 13, 0, 0), 'ExportViewType': 'NEW_AND_OLD_IMAGES' }, ExportType='INCREMENTAL_EXPORT', S3Bucket='bucket', S3Prefix='prefix', S3SseAlgorithm='AES256', ExportFormat='DYNAMODB_JSON' )

Mendapatkan detail tentang ekspor masa lalu menggunakan AWS SDK

Gunakan cuplikan kode ini untuk mendapatkan detail tentang ekspor tabel sebelumnya menggunakan AWS SDKpilihan Anda.

Python

Daftar

import boto3 client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/list_exports.html print( client.list_exports( TableArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE', ) )

Jelaskan

import boto3 client = boto3.client('dynamodb') # https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb/client/describe_export.html print( client.describe_export( ExportArn='arn:aws:dynamodb:us-east-1:0123456789:table/TABLE/export/01695353076000-06e2188f', )['ExportDescription'] )