【问题标题】:AWS CloudFormation: Is it possible to Update Stack to recreate DB resources without data lossAWS CloudFormation:是否可以更新堆栈以重新创建数据库资源而不会丢失数据
【发布时间】:2017-09-02 02:52:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    但是,有一些解决方案允许您将数据从 DynamoDB 导出到 S3 并重新导入。例如,以下两个链接展示了如何使用 AWS Data Pipelines 来做到这一点:

    【讨论】:

    • 这对于导入和导出来说似乎相当复杂!让我想知道是否有人制作了一些有用的工具来简化此操作?
    • AWS 最近推出了更简单的 DynamoDB“按需备份”服务,您可以从 CLI 或通过 Web 控制台调用。比他们之前推荐的用于备份 DynamoDB 表的 Data Pipeline 流程更易于使用。 aws.amazon.com/dynamodb/backup-restore
    【解决方案2】:

    DynamoDB 导入/导出功能可以通过管理控制台来实现。

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

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

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

    AWS DynamoDB Import and Export Blog

    DDB Import

    DDB Export

    【讨论】:

      猜你喜欢
      • 2017-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 1970-01-01
      • 2021-04-22
      • 2011-08-10
      • 2020-10-01
      相关资源
      最近更新 更多