我们称之前导出数据的原始表为source table,数据将要被导入的表为destination table。你能够将S3中的导出文件导入到dynamodb的表中。可是要先确保满足以下条件:
- The destination table 已经存在。 (导入任务不会为你创建表)
- The destination table 与 source table 有同样的名称。
- The destination table 与 source table 有同样的结构。
Destination table不一定要是空的。然而,导入进程会替换掉表中有相同主键的数据。比如,你有一个Customer 表,它的主键是CustomerId。而且仅仅有三个items (CustomerId 1, 2, and 3)。
假设要导入的文件里相同包括CustomerID 为1,
2, and 3的items。这些在destination table中的items将会被导入文件里的数据替换。假设文件里还包括CustomerId为4的item,那么这个item会被增加到destination table中。
Destination table 能够在不同的AWS region。比如。如果你有个一个 Customer table在US West (Oregon) region,然后将它的数据导出到了Amazon S3中。你能够将它导入到在 EU (Ireland) region中有同样表明,同样主键的表中。这样的做法被称为
cross-region 导出和导入。
注意到AWS管理控制台同意你一次导出多个表的数据。可是,不同的是,你一次仅仅能导入一个表。
从S3导入数据到DynamoDB
- 登陆AWS管理控制台,然后打开dynamodb控制台: https://console.aws.amazon.com/dynamodb/.
- (可选) 假设你想做块区域导入。点击右上角的Select a Region 然后选择要导入的表的区域。控制台会显示该区域下的全部表。
假设destination table不存在的话。你须要先创建它。
- 在 Amazon DynamoDB Tables 页面, 点击 Export/Import.
- 在 Export/Import 页面,选择一个你要导入的表,然后点击 Import into DynamoDB.
- 在 Create Import Table Data Pipeline 页面,按以下步骤操作:
-
- S3 Input Folder 文本框中输入导入文件相应的 Amazon S3 URI。比如:
s3://mybucket/exports
这个URI的规则应该是这样 s3://bucketname
/folder
: -
bucketname
是S3中bucket的名称folder
表示存放要导入的文件的名称
- 导入任务会通过指定的S3位置找到相应的文件。
文件内部结构会在
Verify
Data Export File 中描写叙述。 - 在 S3 Log Folder 文本框中输入一个S3 URI,导出过程的日志将被存储在对应的folder中。比如:
s3://mybucket/logs/
S3 Log Folder URI的格式和
S3 Output Folder的格式同样。 - 在 Throughput Rate 文本框中可选择一个百分比。
这个比率表示在导出过程中会消耗读吞吐量的上限。比如,如果你要导出的表的读吞吐量是20,同一时候你设置的百分比是40%。
那么导出时所消耗的吞吐量将不会超过8.
假设你在导出多个表。这个 Throughput Rate 将会被应用到每一个表中。
- Execution Timeout 文本框,输入导出任务的超时时长。假设导出任务在这个时长内还没运行完毕,此任务会失败。
- Send notifications to 文本框,输入一个email地址。在 pipeline被创建后。你将会收到一封email邀请订阅Amazon SNS。假设你接受了此邀请,在每次运行导出操作时你都将会收到email通知。
- Data Pipeline Role, 选择 DataPipelineDefaultRole.
- Resource Role, 选择 DataPipelineDefaultResourceRole
- 确认好以上设置然后点击 Create Export Pipeline.
导入任务会在你的pipeline创建好后马上运行。