Amazon S3 からの DynamoDB データのインポート: 仕組み
データを DynamoDB にインポートするには、データが CSV、DynamoDB JSON、または Amazon Ion 形式で Amazon S3 バケット内にある必要があります。データは ZSTD または GZIP 形式で圧縮することも、非圧縮形式で直接インポートすることもできます。ソースデータは、単一の Amazon S3 オブジェクトでも、同じプレフィックスを使用する複数の Amazon S3 オブジェクトでもかまいません。
データは新しい DynamoDB テーブルにインポートされ、インポートリクエストを開始すると作成されます。セカンダリインデックスを使用してこのテーブルを作成し、インポートが完了したらすぐに、すべてのプライマリインデックスとセカンダリインデックスでデータのクエリと更新を行うことができます。インポートした後にグローバルテーブルレプリカを追加することもできます。
注記
Amazon S3 のインポートプロセス中に、DynamoDB はインポートされる新しいターゲットテーブルを作成します。既存のテーブルへのインポートは、現在この機能ではサポートされていません。
Amazon S3 からのインポートでは、新しいテーブルの書き込み容量が消費されないため、データを DynamoDB にインポートするために追加の容量をプロビジョニングする必要はありません。データインポートの料金は、インポートの結果として処理される Amazon S3 のソースデータの非圧縮サイズに基づいています。処理されたが、ソースデータの形式やその他の不整合のためにテーブルに読み込めなかった項目も、インポートプロセスの一部として請求されます。詳細については、「Amazon DynamoDB の料金表
別のアカウントによって所有されている Amazon S3 バケットからデータをインポートするには、そのバケットから読み取るための正しい許可が必要です。新しいテーブルは、ソース Amazon S3 バケットとは異なるリージョンにある場合もあります。手順については、「Amazon Simple Storage Service の設定とアクセス許可」を参照してください。
インポート時間は、Amazon S3 におけるデータの特性に直接関係します。これには、データサイズ、データ形式、圧縮スキーム、データ分散の均一性、Amazon S3 オブジェクトの数、およびその他の関連変数が含まれます。特に、均一に分散されたキーを持つデータセットは、歪んだデータセットよりもインポートが高速になります。例えば、セカンダリインデックスのキーが月をパーティショニングに使用し、すべてのデータが 12 月のものだった場合、このデータのインポートにはかなり時間がかかることがあります。
キーに関連付けられた属性は、ベーステーブル上で一意であることが想定されます。一意でないキーがある場合、インポートによって、最後の上書きだけが残るまで、関連する項目が上書きされます。例えば、プライマリキーが月で、複数の項目が 9 月に設定されている場合、新しい項目はそれぞれ以前に書き込まれた項目を上書きし、「月」のプライマリキーが 9 月に設定された 1 つの項目だけが残ります。このような場合、インポートテーブルの説明で処理される項目の数は、ターゲットテーブルの項目数と一致しません。
テーブルインポートのコンソールと API アクションは、すべて AWS CloudTrail に記録されます。詳細については、「AWS CloudTrail を使用して DynamoDB オペレーションをログに記録する」を参照してください。
次の動画では、Amazon S3 から DynamoDB に直接インポートする方法について紹介します。