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: trueStreamSpecification 时,表才有一个 stream。如果一个读取器——最常见是一个 Lambda 事件源映射——被接到一张没有活动 stream 的表上(或一个不再存在的 ARN),映射就无法附加,并报告它无法访问 stream。

为什么会发生

  • 表上从未启用 Streams,但一个消费者期望有一个。
  • Streams 被禁用并重新启用了——每次启用都会铸造一个全新的 stream ARN(带一个新的时间戳后缀)。一个持有旧 ARN 的消费者正在读取一个被禁用的 stream,它至多再保持可读 24 小时,然后它的记录过期。
  • 基础设施即代码漂移——一个 CDK/CloudFormation/Terraform 消费者引用了一张按名称/ARN 导入的表,它没有传播其 stream 配置,因此工具以为 Streams 是关闭的。
  • stream ARN 错误——使用了表 ARN,或一个 .../stream/latest 占位符,而不是真实的 LatestStreamArn

如何修复

  1. 在表上启用 Streams。 通过 UpdateTable、控制台或你的 IaC 设置 StreamSpecification { StreamEnabled: true, StreamViewType: NEW_AND_OLD_IMAGES }(或你消费者所需的任何视图类型)。
  2. 读取当前的 stream ARN。 调用 DescribeTable 并使用 LatestStreamArn 字段——绝不用一个手工构建或缓存的 ARN。
  3. 在任何禁用/启用循环后把消费者重新指向新 ARN;如果 Lambda 事件源映射绑定到了旧 stream,就重新创建它。
  4. 授予读取权限——消费者的角色需要在 stream ARN 上有 dynamodb:DescribeStreamGetRecordsGetShardIteratorListStreams
  5. 不要混淆表与 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 有助于验证表在流切换后是否仍提供键控读取服务。

来源

相关错误

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。