DynamoDB export — Point in time recovery is not enabled

TL;DR — Export ke Amazon S3 (ExportTableToPointInTime) mensyaratkan Point-in-Time Recovery (PITR) aktif di tabel sumber. Kalau PITR mati Anda akan mendapat PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Aktifkan PITR, pastikan statusnya melaporkan ENABLED, lalu ajukan export-nya.

Apa artinya

An error occurred (PointInTimeRecoveryUnavailableException) when calling the
ExportTableToPointInTime operation: Point in time recovery is not enabled for
table 'my-dynamodb-table'

Fitur export ke S3 DynamoDB, baik penuh maupun inkremental, membaca dari continuous backup PITR milik tabel, bukan dari kapasitas tabel yang live. Karena itulah ia tidak pernah mengonsumsi RCU dan bisa meng-export keadaan tabel pada titik mana pun di dalam jendela pemulihan — tapi ini hanya bekerja ketika PITR aktif. Tanpa PITR, tidak ada export.

Mengapa itu terjadi

  • PITR tidak pernah dinyalakan untuk tabel itu — PointInTimeRecoveryStatus bernilai DISABLED secara default di setiap tabel baru.
  • Salah tabel atau salah regionTableArn pada export menunjuk ke tabel (atau replika di Region lain) yang tidak dikonfigurasi dengan PITR.
  • Mirip, tapi error yang berbedaExportTime di luar jendela PITR tidak memunculkan exception ini; ia gagal dengan InvalidExportTimeException. Jendela itu mencakup periode pemulihan yang Anda konfigurasikan (RecoveryPeriodInDays, 1–35 hari) dan tidak pernah menjangkau lebih jauh ke belakang dari saat PITR diaktifkan.

Bagaimana cara memperbaikinya

  1. Aktifkan PITR di tabel sumber — UpdateContinuousBackups dengan PointInTimeRecoveryEnabled: true, atau nyalakan lewat konsol di bagian Backups.
  2. Pastikan PITR menyalaDescribeContinuousBackups seharusnya melaporkan PointInTimeRecoveryStatus: ENABLED. (Jangan tertukar dengan ContinuousBackupsStatus, yang selalu ENABLED bahkan ketika PITR mati.) Sejak saat itu, titik mana pun di dalam jendela bisa di-export.
  3. Jaga ExportTime tetap di dalam jendela — dalam periode pemulihan yang Anda konfigurasikan (hingga 35 hari) dan pada atau setelah saat PITR diaktifkan; di luar itu Anda akan mendapat InvalidExportTimeException. Hilangkan saja parameter itu untuk meng-export titik waktu saat ini.
  4. Pastikan izin IAM-nya — pemanggil butuh dynamodb:ExportTableToPointInTime plus s3:PutObject, s3:PutObjectAcl, dan s3:AbortMultipartUpload pada bucket tujuan.
  5. Sasarkan ARN tabel dan region yang benar di dalam request export.

Perlu memverifikasi apa yang benar-benar mendarat di S3? Aplikasi desktop DynoTable menelusuri tabel sumber dan mengekspor item yang sama sebagai CSV, JSON, atau NDJSON, jadi Anda punya bahan pembanding untuk objek S3-nya.

Cara mereproduksinya

Buat sebuah tabel, biarkan PITR mati, lalu minta sebuah export. Bucket-nya tidak perlu ada — pemeriksaan PITR jalan lebih dulu:

import boto3
ddb = boto3.client('dynamodb', region_name='us-east-1')
arn = ddb.describe_table(TableName='my-table')['Table']['TableArn']
ddb.export_table_to_point_in_time(TableArn=arn, S3Bucket='any-bucket-name')

Keluaran sebenarnya:

PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table 'my-table'
HTTP 400

Dua detail yang layak dibawa ke penanganan error Anda. Pesan mentah dari SDK hanyalah kalimat di atas — bentuk yang lebih panjang, An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: …, adalah AWS CLI dan pembungkus botocore yang menambahkan konteks, jadi mana yang Anda lihat tergantung cara Anda memanggilnya. Dan request-nya tidak pernah sampai ke S3: bucket dalam percobaan ini tidak ada, namun kegagalannya soal PITR, jadi salah ketik nama bucket tidak akan muncul sampai PITR menyala.

Kesalahan terkait

Referensi

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Direproduksi 2026-07-26 terhadap layanan DynamoDB live di us-east-1 via boto3 1.43.56 — keluaran di atas dikutip apa adanya.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.