AWS CloudFormation:是否可以更新堆栈以重新创建数据库资源而不会丢失数据

时间:2017-04-06 21:18:56

标签: amazon-web-services amazon-dynamodb amazon-cloudformation

我有几个CloudFormation Stacks由相同的模板制作,每个包含一些DynamoDB表。我最近需要对DynamoDB表的LSI进行更改。在为数据库中没有任何数据的堆栈环境更新堆栈时,这很好,但是当我更新我们的共享开发堆栈时,我会遇到问题。 LSI只能在创建表时创建,因此当堆栈更改LSI时,它必须删除并创建全新的资源,这将丢弃当前表中的所有数据。

我们的共享开发环境已经包含了一些用于演示和测试的数据,而我不必中断它。在更新堆栈时,有什么方法可以从不同版本的数据库中复制数据吗?我不介意有点手动过程,比如导出所有数据并在更新后导入,但手动输入每个项目的数据太多。如果我不得不擦除数据,那就不是世界末日,只是想知道是否有任何解决方法。

2 个答案:

答案 0 :(得分:3)

CloudFormation不会自动处理此问题 - 它只管理AWS资源,而不是其中的数据。

但是,有一些解决方案允许您将数据从DynamoDB导出到S3并将其导回。例如,以下两个链接显示了如何使用AWS Data Pipelines执行此操作:

答案 1 :(得分:2)

可以从管理控制台使用 DynamoDB导入/导出功能来实现此目的。

DynamoDB导入/导出功能使用 AWS Data Pipeline EMR群集将数据从DynamoDB移至S3,反之亦然。

AWS Data Pipeline上有一个默认模板可用于执行此活动。

完成操作(导出/导入)后,可以释放资源。

AWS DynamoDB Import and Export Blog

DDB Import

DDB Export