

# 从 Amazon S3 导入 DynamoDB 数据：工作方式
<a name="S3DataImport.HowItWorks"></a>

要将数据导入 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 定价](https://aws.amazon.com/dynamodb/pricing)了解详细信息。

如果您具有从其他账户拥有的 Amazon S3 存储桶读取的正确权限，则可以从该特定存储桶导入数据。新表也可能与源 Amazon S3 存储桶位于不同的区域。有关更多信息，请参阅 [Amazon Simple Storage Service 设置和权限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html)。

导入时间与 Amazon S3 中的数据特征直接相关。这包括数据大小、数据格式、压缩方案、数据分布的均匀性、Amazon S3 对象的数量以及其他相关变量。特别是，具有均匀分布的键的数据集将比偏斜的数据集更快地导入。例如，如果二级索引的键使用一年中的月份进行分区，而您的所有数据均来自 12 月，那么导入这些数据可能需要更长时间。

与键关联的属性在基表中应该是唯一的。如果任何键不唯一，则导入操作将覆盖关联项目，只留下最后一次覆盖。例如，如果主键是 month，并且多个项目被设置为 September，则每个新项目都将覆盖之前写入的项目，只留下一个主键“month”设置为 September 的项目。在这种情况下，导入表描述中处理的项目数将与目标表中的项目数不匹配。

AWS CloudTrail 记录用于表导入的所有控制台和 API 操作。有关更多信息，请参阅 [使用 AWS CloudTrail 记录 DynamoDB 操作日志](logging-using-cloudtrail.md)。

以下视频介绍如何将数据直接从 Amazon S3 导入到 DynamoDB。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/fqq0CMOnOaI/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/fqq0CMOnOaI)


**Topics**
+ [在 DynamoDB 中请求表导入](S3DataImport.Requesting.md)
+ [适用于 DynamoDB 的 Amazon S3 导入格式](S3DataImport.Format.md)
+ [导入格式配额和验证](S3DataImport.Validation.md)
+ [将数据从 Amazon S3 导入到 DynamoDB 的最佳实践](S3DataImport.BestPractices.md)