DynamoDB cannot access stream — stream is not enabled

TL;DR — Bir tüketici (bir Lambda olay kaynağı eşlemesi, bir Kinesis Adapter okuyucusu ya da çıplak bir DescribeStream/GetShardIterator çağrısı), Streams'in kapalı olduğu bir tabloda bir DynamoDB stream'i okumaya çalıştı ya da Streams yeniden etkinleştirilmeden önceki bayat bir stream ARN kullandı. Tabloda DynamoDB Streams'i etkinleştirin ve tüketiciyi tablonun mevcut LatestStreamArn'ına yöneltin.

Ne anlama gelir

Cannot access stream arn:aws:dynamodb:us-east-1:111122223333:table/Orders/stream/... .
Please ensure the ARN is correct and the stream is enabled.

DynamoDB Streams must be enabled on the table.

DynamoDB Streams, isteğe bağlı bir özelliktir. Bir tablonun yalnızca StreamEnabled: true ile bir StreamSpecification ayarladığınızda bir stream'i olur. Bir okuyucu — çoğunlukla bir Lambda olay kaynağı eşlemesi — aktif stream'i olmayan bir tabloya (ya da artık var olmayan bir ARN'ye) bağlanmışsa, eşleme takılamaz ve stream'e erişemediğini bildirir.

Neden olur

  • Tabloda Streams hiç etkinleştirilmedi ama bir tüketici bir tane bekliyor.
  • Streams devre dışı bırakıldı ve yeniden etkinleştirildi — her etkinleştirme yepyeni bir stream ARN (yeni bir zaman damgası soneki ile) üretir. Eski ARN'yi tutan bir tüketici, en fazla 24 saat daha okunabilir kalan devre dışı bir stream'i okuyor, sonra kayıtları sona eriyor.
  • Altyapı-kod kayması — bir CDK/CloudFormation/Terraform tüketicisi, stream yapılandırmasını yaymayan bir tabloya ad/ARN ile başvuruyor, dolayısıyla araçlar Streams'in kapalı olduğunu düşünüyor.
  • Yanlış stream ARN — gerçek LatestStreamArn yerine tablo ARN'ini ya da bir .../stream/latest yer tutucusunu kullanmak.

Nasıl düzeltilir

  1. Tabloda Streams'i etkinleştirin. UpdateTable, konsol ya da IaC'niz aracılığıyla StreamSpecification { StreamEnabled: true, StreamViewType: NEW_AND_OLD_IMAGES } (ya da tüketicinizin ihtiyaç duyduğu görünüm türü) ayarlayın.
  2. Mevcut stream ARN'ini okuyun. DescribeTable'ı çağırın ve LatestStreamArn alanını kullanın — asla elle oluşturulmuş ya da önbelleğe alınmış bir ARN'yi değil.
  3. Herhangi bir devre dışı bırakma/etkinleştirme döngüsünden sonra tüketiciyi yeni ARN'ye yeniden yöneltin; eski stream'e bağlanmışsa Lambda olay kaynağı eşlemesini yeniden oluşturun.
  4. Okuma izni verin — tüketicinin rolü stream ARN'inde dynamodb:DescribeStream, GetRecords, GetShardIterator ve ListStreams'e ihtiyaç duyar.
  5. Tablo ile stream ARN'ini karıştırmayın — stream ARN'i /stream/<timestamp> ile biter, tablo ARN'i bitmez.

Tabloyu ve stream yapılandırmasını konsol olmadan mı incelemeniz gerekiyor? DynoTable masaüstü uygulaması, stream durumunu tablonun yanında yüzeye çıkarır, böylece bir okuyucuyu ona yöneltmeden önce açık olduğunu doğrulayabilirsiniz.

DynoTable’da yeniden denemeden önce

Lambda olay kaynağı eşlemesini eklemeden önce DynoTable'daki tabloyu açın ve Akışların etkinleştirildiğini ve hangi StreamViewType'nin ayarlandığını onaylayın (tablo ayrıntıları). DynoTable şemanın yanında akış yapılandırmasını gösterir, böylece AWS konsolundan geçmek zorunda kalmazsınız.

Akışları devre dışı bırakıp yeniden etkinleştirdikten sonra ARN değişir; DynoTable'deki tabloyu yenileyin ve AWS'den (LatestStreamArn CLI/DescribeTable aracılığıyla) mevcut akış kimliğini tüketiciye kopyalayın. Doğru hesap/bölge profilinde kalmak için ⌘P'yi kullanın. Günlük ürün denetimi DynoTable'da kalıyor; akış tüketicileri Lambda/Kinesis araçlarında kalır. query builder, Akışlar geçişinden sonra tablonun hâlâ anahtarlı okumalar sunduğunu doğrulamaya yardımcı olur.

Kaynaklar

İlgili hatalar

Kaynaklar

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

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.