DynamoDB cannot access stream — stream is not enabled
TL;DR — 一個消費者(一個 Lambda 事件源對映、一個 Kinesis 介面卡讀取器,或一個原始的 DescribeStream/GetShardIterator 呼叫)試圖讀取一張 Streams 已關閉的表上的 DynamoDB stream,或者它使用了 Streams 重新啟用之前的一個陳舊 stream ARN。在表上啟用 DynamoDB Streams,並把消費者指向表的當前 LatestStreamArn。
這是什麼意思
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 是一個選擇加入的功能。只有當你設定了一個帶 StreamEnabled: true 的 StreamSpecification 時,表才有一個 stream。如果一個讀取器——最常見是一個 Lambda 事件源對映——被接到一張沒有活動 stream 的表上(或一個不再存在的 ARN),對映就無法附加,並報告它無法訪問 stream。
為什麼會發生
- 表上從未啟用 Streams,但一個消費者期望有一個。
- Streams 被禁用並重新啟用了——每次啟用都會鑄造一個全新的 stream ARN(帶一個新的時間戳字尾)。一個持有舊 ARN 的消費者正在讀取一個被禁用的 stream,它至多再保持可讀 24 小時,然後它的記錄過期。
- 基礎設施即程式碼漂移——一個 CDK/CloudFormation/Terraform 消費者引用了一張按名稱/ARN 匯入的表,它沒有傳播其 stream 配置,因此工具以為 Streams 是關閉的。
- stream ARN 錯誤——使用了表 ARN,或一個
.../stream/latest預留位置,而不是真實的LatestStreamArn。
如何修正
- 在表上啟用 Streams。 透過
UpdateTable、主控台或你的 IaC 設定StreamSpecification{ StreamEnabled: true, StreamViewType: NEW_AND_OLD_IMAGES }(或你消費者所需的任何檢視型別)。 - 讀取當前的 stream ARN。 呼叫
DescribeTable並使用LatestStreamArn欄位——絕不用一個手工構建或快取的 ARN。 - 在任何禁用/啟用迴圈後把消費者重新指向新 ARN;如果 Lambda 事件源對映繫結到了舊 stream,就重新建立它。
- 授予讀取許可權——消費者的角色需要在 stream ARN 上有
dynamodb:DescribeStream、GetRecords、GetShardIterator和ListStreams。 - 不要混淆表與 stream ARN——stream ARN 以
/stream/<timestamp>結尾,表 ARN 不然。
需要在沒有主控台的情況下檢查表及其 stream 配置?DynoTable 桌面應用在表旁邊呈現 stream 狀態,讓你在把讀取器指向它之前確認它是開著的。
在 DynoTable 中重試之前
在附加 Lambda 事件源對映之前,請開啟 DynoTable 中的表並確認 Streams 已啟用以及設定了 StreamViewType(表詳細資訊)。 DynoTable 在模式旁邊顯示流配置,因此你不必透過 AWS 主控台進行跳轉。禁用並重新啟用 Streams 後,ARN 會發生變化 - 重新整理 DynoTable 中的表,並將當前流身份從 AWS(透過 CLI/DescribeTable)複製到使用者中。使用 ⌘P 保持正確的帳戶/區域設定檔案。日常項目檢查停留在DynoTable;流消費者留在 Lambda/Kinesis 工具中。 query builder 有助於驗證表在流切換後是否仍提供鍵控讀取服務。
來源
- Change data capture for DynamoDB Streams(2026-07-13 驗證)
- Process Amazon DynamoDB records with Lambda(2026-07-13 驗證)
相關錯誤
- ResourceNotFoundException——表或 stream ARN 根本不存在。
- The ARN provided is invalid——一個格式錯誤的 stream ARN。
- 學習:DynamoDB Streams
參考資料
- Change data capture for DynamoDB Streams — Amazon DynamoDB Developer Guide
- Process Amazon DynamoDB records with Lambda — AWS Lambda Developer Guide
- StreamSpecification — Amazon DynamoDB API Reference
- DescribeTable — Amazon DynamoDB API Reference
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。