DynamoDB S3 import failed — invalid format

TL;DR — ImportTable 以状态 FAILEDFailureCode: 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 item

DynamoDB 从 S3 导入会根据你在 ImportTable 调用中声明的格式和压缩来验证每个对象——InputFormatDYNAMODB_JSONIONCSV)和 InputCompressionTypeGZIPZSTDNONE)优先于文件扩展名。如果字节无法按声明解析,或者某个项目缺少表的主键,那个项目会被跳过(导入继续处理下一个项目),而作业以 FAILED 结束。

为什么会发生

  • 格式不匹配——你指定了 DYNAMODB_JSON,但对象实际上是 CSV(或普通 JSON),因此什么都解析不了。
  • 压缩不匹配——前缀下的对象压缩方式不同(有些 GZIP,有些 NONE);它们必须全部使用同一种。
  • 不受支持的压缩——只允许 GZIPZSTDNONE;其他编解码器会失败。
  • 缺失主键——一个 CSV/JSON 项目没有与声明的分区(或排序)键匹配的列/属性:"Missing the key pk in the item."
  • 键类型不匹配——导入的键类型与表的 AttributeDefinitions 不匹配(例如一个数字键被当作字符串导入)。
  • 前缀下有一个无法解析的对象——匹配该前缀的每个对象都被当作数据读取,因此一个杂散的占位符或格式错误的文件会验证失败。

如何修复

  1. InputFormat 与实际字节匹配——CSV 文件 → CSV,DynamoDB JSON → DYNAMODB_JSON,Amazon Ion → ION
  2. 让前缀下的每个对象使用相同的压缩,并设置 InputCompressionType 与之匹配(GZIP/ZSTD/NONE)。
  3. 确保每个项目都有主键——对于 CSV,包含名称与声明的 KeySchema 匹配的键列(及表头)。
  4. 让键属性类型与表的 AttributeDefinitions 匹配S/N/B)。
  5. 阅读 CloudWatch 错误日志,位于 /aws-dynamodb/imports,日志流 <import-id>/error,获取确切的逐项目原因。
  6. 在前缀下只保留可解析的数据对象;通过 CLI/SDK 上传数据,而不是在控制台中创建文件夹。

在从现有数据构建导入文件?DynoTable 桌面应用会导出并预览 DynamoDB JSON,让你在把对象推送到 S3 之前核实格式以及主键是否存在。

DynoTable 工作台

上传前验证导入文件 - 从DynoTable导出示例项目为DynamoDBJSON(⌘K→复制项目)并确认JSON converter中的关键属性。当大对象导致解析失败时,使用 item size calculator 检查项目大小。在“设置”→“配置文件”下使用Test Connection配置 S3 帐户配置文件;用 ⌘P 切换。参见连接 AWS安装

来源

相关错误

参考资料

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

无需控制台即可使用 DynamoDB

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

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