DynamoDB Streams — The ARN provided is invalid

TL;DR — Bir Streams API çağrısı (DescribeStream, GetShardIterator, GetRecords), iyi biçimlendirilmiş, güncel bir stream tanımlayıcısı olmayan bir stream ARN aldı — genellikle bir /stream/latest yer tutucusu, yanlışlıkla bir tablo ARN'i ya da bayat/kesilmiş bir ARN. Gerçek ARN'i DescribeTable'ın LatestStreamArn'ından alın ve birebir iletin.

Ne anlama gelir

ValidationException: The ARN provided is invalid

Bir DynamoDB stream ARN'inin katı bir şekli vardır:

arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291

Sondaki /stream/<ISO-8601 timestamp>, sembolik bir ad değil, belirli bir stream tanımlayıcısıdır. Streams uç noktası, geçerli, var olan bir stream ARN olarak ayrıştırılamayan her şeyi The ARN provided is invalid ile reddeder.

Neden olur

  • Bir /stream/latest (ya da benzeri) yer tutucusu — bazı araçlar ve yerel emülatörler onu kabul eder ama gerçek DynamoDB somut zaman damgalı tanımlayıcıyı gerektirir.
  • Bir stream ARN'inin beklendiği yerde tablo ARN'ini (.../table/TestTable) iletmek.
  • Bayat bir ARN — Streams devre dışı bırakılıp yeniden etkinleştirildi, dolayısıyla tablonun mevcut stream'inin yeni bir tanımlayıcısı var; eski stream, devre dışı bırakıldıktan sonra yalnızca 24 saat okunabilir kalır, sonra kayıtları sona erer.
  • Elle oluşturulmuş ya da kesilmiş bir ARN — yanlış bölge, yanlış hesap, /stream/... segmentinin eksik olması ya da fazladan bir boşluk/yeni satır.
  • Bölge uyuşmazlığı — Streams istemcisi, ARN'in kodladığından farklı bir bölge için yapılandırılmış.

Nasıl düzeltilir

  1. ARN'i doğruluk kaynağından alın. DescribeTable'ı çağırın ve Table.LatestStreamArn'ı okuyun; o tam dizeyi kullanın.
  2. ARN'i asla elle sentezlemeyin ya da /stream/latest kullanmayın — zaman damgası segmenti DynamoDB tarafından atanır ve tahmin edilemez.
  3. DescribeStream/GetShardIterator/GetRecords için ana DynamoDB uç noktasını değil, DynamoDB Streams uç noktasını kullanın.
  4. İstemcinin bölgesini ARN'deki bölgeyle eşleştirin.
  5. Herhangi bir Streams değişikliğinden sonra yeniden alın — bir devre dışı bırakma/etkinleştirme döngüsü farklı bir tanımlayıcıya sahip yepyeni bir stream oluşturur, dolayısıyla önceki ARN artık canlı stream'i göstermez.

Streams ile mi çalışıyor ve gerçek stream ARN'ini önünüzde mi istiyorsunuz? DynoTable masaüstü uygulaması, tablonun canlı stream tanımlayıcısını gösterir, böylece tahmin edilmiş bir tanesini değil, doğru ARN'i kopyalarsınız.

DynoTable’da yakala

DynoTable her tablonun LatestStreamArn'ını tablo meta veri panelinde gösterir; elle /stream/latest yer tutucuları oluşturmak yerine tabloyu kelimesi kelimesine kopyalayın. Tabloyu ⌘K ile açın ve Lambda veya KCL tüketicisini bağlamadan önce Akış ayrıntılarını genişletin.

Tabloya akışın sahibi olan profille erişilebildiğini onaylamak için Query Builder tuşunu kullanın. ⌘P ile Bölgeleri Değiştirin; Ayarlar'daki Bağlantıyı Test Et → Profiller ARN'ün Bölgesiyle eşleşmelidir. Bkz. Connect to AWS ve Install. /stream/<timestamp> sonekini hiçbir zaman elle oluşturmayın; her seferinde DescribeTable'ten LatestStreamArn'ü kopyalayın. ARN (.../table/Name) tablosu bir ARN akışı değildir ve aynı doğrulama hatasını tetikler.

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.