DynamoDB cannot access stream — stream is not enabled

TL;DR — コンシューマー(Lambda イベントソースマッピング、Kinesis Adapter リーダー、または生の DescribeStream/GetShardIterator 呼び出し)が、Streams がオフ のテーブルで DynamoDB ストリームを読もうとした、または Streams が再有効化される前の古いストリーム 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 を設定したときのみストリームを持ちます。リーダー — 多くの場合 Lambda イベントソースマッピング — が、アクティブなストリームのないテーブル(またはもう存在しない ARN)に配線されると、マッピングはアタッチできず、ストリームにアクセスできないと報告します。

発生する理由

  • テーブルで Streams が有効化されたことがない のに、コンシューマーがそれを期待している。
  • Streams が無効化されて再有効化された — 各有効化は 真新しい ストリーム ARN(新鮮なタイムスタンプサフィックス付き)を発行します。古い ARN を保持するコンシューマーは、最大でもあと 24 時間読み取り可能な無効化されたストリームを読んでおり、その後レコードは期限切れになります。
  • Infrastructure-as-code のドリフト — CDK/CloudFormation/Terraform のコンシューマーが、ストリーム設定を伝播しなかった名前/ARN でインポートされたテーブルを参照するため、ツールは Streams がオフだと考える。
  • 誤ったストリーム ARN — 実際の LatestStreamArn の代わりに、テーブル ARN や .../stream/latest プレースホルダーを使う。

修正方法

  1. テーブルで Streams を有効にします。 UpdateTable、コンソール、または IaC 経由で、StreamSpecification { StreamEnabled: true, StreamViewType: NEW_AND_OLD_IMAGES }(またはコンシューマーが必要とするビュータイプ)を設定します。
  2. 現在のストリーム ARN を読みます。 DescribeTable を呼び出して LatestStreamArn フィールドを使います。手作りやキャッシュされた ARN は決して使いません。
  3. 無効化/有効化のサイクルの後、コンシューマーを新しい ARN に向け直します。Lambda イベントソースマッピングが古いストリームにバインドされていたら再作成します。
  4. 読み取り権限を付与します — コンシューマーのロールには、ストリーム ARN に対する dynamodb:DescribeStreamGetRecordsGetShardIteratorListStreams が必要です。
  5. テーブル ARN とストリーム ARN を混同しないでください — ストリーム ARN は /stream/<timestamp> で終わり、テーブル ARN はそうではありません。

コンソールなしでテーブルとそのストリーム設定を検査する必要がありますか?DynoTable デスクトップアプリ はテーブルの横にストリームステータスを表示するため、リーダーを向ける前にオンであることを確認できます。

DynoTable で再試行する前に

Lambda のイベントソースマッピングを付ける前に、DynoTable でテーブルを開き、Streams が有効かどうかと、どの StreamViewType が設定されているか(テーブル詳細)を確認しましょう。DynoTable はストリームの設定をスキーマの隣に表示するので、AWS コンソールを行き来する必要がありません。

Streams を無効にして再度有効にすると ARN が変わります — DynoTable でテーブルを更新し、AWS から現在のストリームの識別子(CLI/DescribeTableLatestStreamArn)をコンシューマーにコピーしてください。正しいアカウント/リージョンのプロファイルから外れないよう、⌘P を使いましょう。日々のアイテムの確認は DynoTable、ストリームのコンシューマーは Lambda/Kinesis のツールという住み分けです。Streams を切り替えたあともテーブルがキーによる読み取りを返すことは、クエリビルダーで確認できます。

出典

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。