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 官方文档。