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 invalidBir DynamoDB stream ARN'inin katı bir şekli vardır:
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291Sondaki /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
- ARN'i doğruluk kaynağından alın.
DescribeTable'ı çağırın veTable.LatestStreamArn'ı okuyun; o tam dizeyi kullanın. - ARN'i asla elle sentezlemeyin ya da
/stream/latestkullanmayın — zaman damgası segmenti DynamoDB tarafından atanır ve tahmin edilemez. DescribeStream/GetShardIterator/GetRecordsiçin ana DynamoDB uç noktasını değil, DynamoDB Streams uç noktasını kullanın.- İstemcinin bölgesini ARN'deki bölgeyle eşleştirin.
- 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
- Change data capture for DynamoDB Streams (2026-07-13 tarihinde doğrulandı)
- GetShardIterator — Amazon DynamoDB Streams API Reference (2026-07-13 tarihinde doğrulandı)
İlgili hatalar
- Cannot access stream — stream is not enabled — Streams kapalı ya da ARN gitmiş bir stream'i gösteriyor.
- ValidationException — parametre değerleri geçersizdi
- Öğrenin: DynamoDB Streams
Kaynaklar
- Change data capture for DynamoDB Streams — Amazon DynamoDB Developer Guide
- GetShardIterator — Amazon DynamoDB Streams API Reference
- DescribeStream — Amazon DynamoDB Streams API Reference
- DescribeTable — Amazon DynamoDB API Reference
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.