DynamoDB S3 import failed — invalid format
TL;DR — ImportTable がステータス FAILED、FailureCode: ItemValidationError、メッセージ "Some of the items failed validation checks and were not imported." で終了しました。ソースオブジェクトが、宣言した InputFormat/InputCompressionType と一致しないか、アイテムにプライマリキーが欠けています。形式/圧縮をオブジェクトに合わせて修正し、すべてのアイテムがキーを持つことを確認して、インポートを再実行してください。
意味
"FailureCode": "ItemValidationError",
"FailureMessage": "Some of the items failed validation checks and were not
imported. Please check CloudWatch error logs for more details."
# In /aws-dynamodb/imports CloudWatch logs:
ValidationException: One or more parameter values were invalid: Missing the key pk in the itemDynamoDB の S3 からのインポートは、各オブジェクトを ImportTable 呼び出しで宣言した形式と圧縮 に対して検証します。InputFormat(DYNAMODB_JSON、ION、または CSV)と InputCompressionType(GZIP、ZSTD、または NONE)はファイル拡張子より優先されます。バイトが宣言どおりに解析されない、またはアイテムにテーブルのプライマリキーがない場合、そのアイテムはスキップされ(インポートは次のアイテムで続行)、ジョブは FAILED で終了します。
発生する理由
- 形式の不一致 —
DYNAMODB_JSONを指定したが、オブジェクトは実際には CSV(またはプレーンな JSON)で、何も解析されない。 - 圧縮の不一致 — プレフィックス配下のオブジェクトが異なる圧縮をしている(一部が GZIP、一部が NONE)。すべて同じものを使う必要があります。
- サポートされない圧縮 — 許可されるのは
GZIP、ZSTD、NONEのみ。他のコーデックは失敗します。 - プライマリキーの欠落 — CSV/JSON アイテムに、宣言されたパーティション(またはソート)キーに一致する列/属性がない: "Missing the key pk in the item."
- キー型の不一致 — インポートされたキーの型がテーブルの
AttributeDefinitionsと一致しない(例: 数値キーが文字列としてインポートされる)。 - プレフィックス配下の解析不能なオブジェクト — プレフィックスに一致するすべてのオブジェクトがデータとして読まれるため、迷い込んだプレースホルダーや不正な形式のファイルが検証に失敗する。
修正方法
InputFormatを実際のバイトに一致させます — CSV ファイル →CSV、DynamoDB JSON →DYNAMODB_JSON、Amazon Ion →ION。- プレフィックス配下のすべてのオブジェクトが同じ圧縮を使うようにし、
InputCompressionTypeを一致させます(GZIP/ZSTD/NONE)。 - 各アイテムがプライマリキーを持つことを確認します — CSV では、宣言された
KeySchemaに一致する名前でキー列(とヘッダー)を含めます。 - キー属性の型を テーブルの
AttributeDefinitions(S/N/B)に一致させます。 /aws-dynamodb/importsのログストリーム<import-id>/errorで CloudWatch エラーログを読み、アイテムごとの正確な理由を確認します。- プレフィックス配下には解析可能なデータオブジェクトのみを保ちます。コンソールでフォルダを作成するのではなく、CLI/SDK 経由でデータをアップロードします。
既存のデータからインポートファイルを組み立てていますか?DynoTable デスクトップアプリ は DynamoDB JSON をエクスポートしてプレビューするため、オブジェクトを S3 にプッシュする前に、形式とプライマリキーの存在を検証できます。
DynoTable ワークベンチ
アップロードの前にインポートファイルを検証しましょう — DynoTable からサンプルのアイテムを DynamoDB JSON として書き出し(⌘K → アイテムをコピー)、JSON コンバーターでキー属性を確認します。大きなオブジェクトがパース失敗の原因になっているときは、アイテムサイズ計算ツールでサイズを確かめてください。
S3 のアカウント用プロファイルは Settings → Profiles で設定し、Test Connection を実行します。切り替えは ⌘P です。AWS に接続するとインストールを参照してください。
出典
- Import format quotas and validation (2026-07-13 時点で検証)
- ImportTable — Amazon DynamoDB API Reference (2026-07-13 時点で検証)
関連するエラー
- ResourceInUseException — インポート先のテーブル名がすでに存在する。
- The provided key element does not match the schema — キー型の不一致。
- 学習: DynamoDB JSON とマーシャリング · DynamoDB を CSV にエクスポートする
参考資料
- Import format quotas and validation — Amazon DynamoDB Developer Guide
- Requesting a table import in DynamoDB — Amazon DynamoDB Developer Guide
- ImportTable — Amazon DynamoDB API Reference
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。