DynamoDB export — Point in time recovery is not enabled

TL;DR — Amazon S3'e dışa aktarma (ExportTableToPointInTime), kaynak tabloda Belirli Bir Zaman Noktasına Kurtarma (PITR) gerektirir. PITR kapalıysa PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>' alırsınız. PITR'yi etkinleştirin, ENABLED bildirdiğini doğrulayın, sonra dışa aktarmayı isteyin.

Ne anlama gelir

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

DynamoDB'nin S3'e tam ve artımlı dışa aktarma özelliği, canlı tablo kapasitesinden değil, tablonun PITR sürekli yedeklerinden okur. Bu yüzden hiç RCU tüketmez ve bir tablonun durumunu kurtarma penceresindeki herhangi bir noktada dışa aktarabilir — ancak yalnızca PITR etkinken çalışır. PITR yok, dışa aktarma yok.

Neden olur

  • Tablo için PITR hiç açılmadıPointInTimeRecoveryStatus her yeni tabloda varsayılan olarak DISABLED'dır.
  • Yanlış tablo veya bölge — dışa aktarmanın TableArn'ı, PITR yapılandırılmamış bir tabloyu (ya da başka bir Bölgedeki bir çoğaltmayı) gösteriyor.
  • Benzer görünür, farklı hata — PITR penceresi dışındaki bir ExportTime bu istisnayı fırlatmaz; InvalidExportTimeException ile başarısız olur. Pencere, yapılandırılmış kurtarma sürenizi (RecoveryPeriodInDays, 1–35 gün) kapsar ve PITR'nin etkinleştirildiği andan önceye asla ulaşmaz.

Nasıl düzeltilir

  1. Kaynak tabloda PITR'yi etkinleştirinPointInTimeRecoveryEnabled: true ile UpdateContinuousBackups ya da konsolda Yedekler altında değiştirin.
  2. PITR'nin açık olduğunu doğrulayınDescribeContinuousBackups, PointInTimeRecoveryStatus: ENABLED bildirmelidir. (Onu, PITR kapalıyken bile her zaman ENABLED olan ContinuousBackupsStatus ile karıştırmayın.) O andan itibaren penceredeki herhangi bir nokta dışa aktarılabilir.
  3. ExportTime'ı pencerenin içinde tutun — yapılandırılmış kurtarma süreniz içinde (35 güne kadar) ve PITR'nin etkinleştirildiği anda ya da sonrasında; dışında InvalidExportTimeException alırsınız. Mevcut zaman noktasını dışa aktarmak için onu atlayın.
  4. IAM izinlerini doğrulayın — çağıran, hedef paket üzerinde dynamodb:ExportTableToPointInTime artı s3:PutObject, s3:PutObjectAcl ve s3:AbortMultipartUpload'a ihtiyaç duyar.
  5. Dışa aktarma isteğinde doğru tablo ARN'ini ve bölgeyi hedefleyin.

S3'e gerçekte ne indiğini doğrulamanız mı gerekiyor? DynoTable masaüstü uygulaması kaynak tabloya göz atar ve aynı öğeleri CSV, JSON ya da NDJSON olarak dışa aktarır; böylece S3 nesnelerini karşılaştırabileceğiniz bir şeyiniz olur.

Nasıl yeniden oluşturulur

Bir tablo oluşturun, PITR kapalı kalsın ve bir dışa aktarma isteyin. Bucket var olmak zorunda değil — önce PITR denetimi çalışır:

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')

Gerçek çıktı:

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

Hata işlemenize taşımaya değer iki ayrıntı. Ham SDK mesajı yalnızca yukarıdaki cümledir — daha uzun An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … biçimi, AWS CLI ile botocore sarmalayıcısının bağlam eklemesidir; yani hangisini gördüğünüz onu nasıl çağırdığınıza bağlıdır. Ayrıca istek S3'e hiç ulaşmadı: bu çalıştırmadaki bucket yok, yine de hata PITR ile ilgili — dolayısıyla bucket adındaki bir yazım hatası, PITR açılana kadar ortaya çıkmaz.

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

2026-07-26 tarihinde boto3 1.43.56 üzerinden us-east-1'deki canlı DynamoDB hizmetine karşı yeniden üretildi — yukarıdaki çıktı birebir alınmıştır.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.