AWSがDynamoDBのバルクプット項目を一般提供:S3のファイルを別容量で既存テーブルへ取り込み、米国東部でGBあたり0.10ドルから、ただし条件なしのレコードは上書き、ストリームの消費側には書き込みが見え、グローバルテーブルは未対応

Published · AI Daily — AI-assisted deep research, methodology & disclosure

2026年11月5日、AWSはAmazon DynamoDBのバルクプット項目の一般提供を発表しました。Amazon S3にある行区切りのDynamoDB JSONまたはIonのファイルを、別の容量で既存テーブルへ書き込み、AWSによればテーブルの読み取り・書き込み容量は消費しません。条件式のないレコードは同じキーの既存項目を上書きします。ローンチブログは米国東部でStandardがGBあたり0.10ドル、Acceleratedが0.20ドル、1回の操作の上限が100GBと1TB、開始時点ではグローバルテーブル未対応としています。取り込まれた項目はDynamoDB StreamsとKinesisに現れ、Acceleratedには独自のリージョン一覧があります。

2026年11月5日、AWSはAmazon DynamoDBのバルクプット項目(bulk put items)の一般提供を発表しました。Amazon S3のデータを既存のテーブルへ書き込む、フルマネージドの機能です。これまで、他のシステムが作ったファイルを稼働中のテーブルに取り込むには、独自のパイプライン、AWS GlueやAmazon EMRでのジョブ、そしてテーブル容量の慎重な管理が必要でした。今回は、入力ファイルのS3の場所、レポートの出力先、階層を指定するだけです。発表では既存のワークロードに影響しないとされ、ローンチブログと開発者ガイドでは、別の容量を使い、テーブルの読み取り・書き込み容量を消費しないと説明されています。

入力ファイルは行区切りのDynamoDB JSONまたはAmazon Ionで、gzipやzstdで圧縮することもできます。各レコードは、PutItemと同じ構文の独自の条件式を持てます。パーティションキーにattribute_not_existsを使えば挿入専用の書き込みになり、バージョン属性を比較すれば、入ってくるコピーのほうが新しいときだけ書き込まれます。1つのファイルに、無条件、挿入専用、バージョン保護のレコードを混在させられます。注意点が二つあります。条件のないレコードは無条件に書き込まれ、同じキーの既存項目を上書きします。また、すべての項目に同じ条件を適用したい場合は、その条件をファイル内のすべてのレコードに書く必要があります。条件でスキップされた項目は失敗ではなく、処理済みとして数えられ、条件チェック失敗を指定した場合にレポートに出ます。

操作は非同期です。開始呼び出しは操作のARNを返し、クライアントトークンが付くため、開始のリトライで重複した取り込みが走ることはありません。最初の数分は準備に使われるので、カウンターは最初ゼロのままのことがあります。開始するIDにはアカウント単位とテーブル単位の権限、入力バケットの読み取り、レポートバケットの書き込み、関連するAWS KMSキーへのアクセスが必要です。操作はCOMPLETED、COMPLETED_WITH_ERRORS、FAILED、CANCELLEDのいずれかで終わります。キャンセルしても書き込み済みの項目は戻らないため、キャンセルした取り込みではテーブルが部分的に更新された状態になります。レポートには、書き込まれなかったレコードが元のオブジェクト、その中の位置、理由とともに並び、条件失敗では新しい項目と既存の項目の両方が示されます。ブログは、COMPLETED_WITH_ERRORSを通常の経路として扱い、エラーのレコードを直して、それだけを再取り込みするよう勧めています。

階層は二つです。Standardは既定でより安く、定期的なデータ拡充やバックフィルのような時間に余裕のある作業向けです。Acceleratedはより高いスループットを狙い、移行や復旧のように期限がある作業向けです。十分にスケールしたテーブル、高カーディナリティーのパーティションキー空間で均等な分布、入力を複数のほぼ同サイズのS3オブジェクトに分割、グローバルセカンダリインデックスへのレプリケーションなしという前提で、AWSはAcceleratedの目安として、1KBの項目1,000万件で10分未満、1億件で1時間未満、10億件で2〜4時間を示しています。AWSはこれを説明用の出発点と呼んでいます。また、最初の数回の実行はテーブルのスケールを追い越すことがあり、同じ形のファイルを3〜5回実行して初めて所要時間が安定すると注意しています。

課金はバイト単位です。米国東部(バージニア北部)で、ブログはStandardがGBあたり0.10ドル、AcceleratedがGBあたり0.20ドルとし、項目ごとに最低1KB、テーブルと各インデックスで別々に計算します。失敗した条件チェックは課金され、検証で拒否された項目は課金されません。同じ記事には1KBの項目1億件の例があり、Standardで10.00ドル、Acceleratedで20.00ドルです。本稿はこのリージョンの数字だけを伝えます。他のリージョンについて発表は料金ページを案内しています。

制限は具体的です。テーブルごとに同時に実行できるバルクプット操作は1つで、インデックスの作成中は実行できません。1アカウントで同時に実行できるのはStandardとAcceleratedそれぞれ最大5件です。1回の操作はStandardで最大100GB、Acceleratedで最大1TBまで、対象テーブルはアクティブである必要があります。開始時点ではグローバルテーブルは未対応で、操作中にレプリカを追加することもできません。ベクトルインデックスがあるテーブルではStandardのみです。この機能は項目全体を書き込み、個別の属性は更新しないため、その用途にはUpdateItemを使います。Standardはすべての商用リージョンとAWS GovCloud(米国)で使えますが、Acceleratedは別のページに挙がっているリージョンだけなので、Standardの提供範囲をAcceleratedのものと読んではいけません。

私たちの見方です。影響なしという見出しは、テーブル容量とアプリケーションの読み書き指標については正しいものの、ブログ自身がほかの影響も挙げています。取り込まれた項目はDynamoDB StreamsやKinesisの出力ではアプリケーションの書き込みと同じに見えるため、大きな取り込みは、追加のスループットに合わせて消費側を用意するか、MaxWriteRequestUnitsで操作の書き込み速度に上限を付けないと、ストリームの消費側を圧迫するおそれがあります。ブログは、上限を低くしすぎると実行が時間制限を超えて失敗しうると警告していますが、保存したどのページにも、その時間制限の具体的な値は書かれていません。進行中のトランザクションがある項目はそちらが優先されます。バルクの書き込みは消費容量の指標に出ないため、テーブルのアラームでは取り込みの異常に気づけず、見るべきは操作のステータスです。少数の項目なら、PutItemやBatchWriteItemが引き続き適しています。

Sources

FAQ

バルクプット項目は既存のDynamoDB項目を上書きしますか?

上書きすることがあります。条件式のないレコードは無条件に書き込まれ、同じキーの既存項目を置き換えます。既存のデータを守るには、attribute_not_existsによる挿入専用やバージョン比較による更新のように、各レコードに条件を付けます。すべての項目に同じ条件が必要なら、入力ファイルのすべてのレコードに繰り返します。

この取り込みはアプリケーションに本当に影響しませんか?

完全にはそうではありません。AWSは、書き込みが別の容量を使い、テーブルの読み取り・書き込み容量を消費せず、テーブルの指標にも出ないと説明しています。ただし取り込まれた項目はアプリケーションの書き込みと同様にDynamoDB StreamsとKinesisに現れるため、消費側の見積もりが必要で、進行中のトランザクションがある項目は完了まで変更されません。

Standardが使える場所ならAcceleratedも使えますか?

必ずしもそうではありません。Standardはすべての商用リージョンとAWS GovCloud(米国)で使えますが、Acceleratedは別のAWSページに挙がるリージョンに限られ、ベクトルインデックスのあるテーブルでも使えません。1回の操作はStandardで最大100GB、Acceleratedで最大1TBで、1アカウントあたり階層ごとに5件までです。