【问题标题】:Create AWS dynamodb table via aws cli and attach it to a cloudformation stack通过 aws cli 创建 AWS dynamodb 表并将其附加到 cloudformation 堆栈
【发布时间】:2019-03-23 10:28:34
【问题描述】:

是否可以创建 aws dynamodb 资源并将其附加到 cloudformation 堆栈后堆栈创建?

用例:我有一个 dynamodb 表,我想擦干净(删除所有项目)。执行此操作的两种方法是删除然后重新创建表或单独删除每个项目,这很昂贵。因此,我想选择删除并重新创建整个表。但是,该资源属于 cloudformation 堆栈,我想保持这种状态。

有什么想法吗?

【问题讨论】:

  • 我不推荐它,但你总是可以先用另一个堆栈尝试它。保存表的标签,然后删除表,然后用相同的表名、相同的键、相同的 LSI/GSI 重新创建它,然后重新应用标签。 CF 堆栈通过 ARN 引用表,如果您为表指定相同的名称,它将是相同的。

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


【解决方案1】:

从堆栈资源中删除表格很容易,只需从模板中删除资源,或者更简洁的解决方案,在 cloudformation 资源上使用Condition 来打开或关闭表格.然后,您可以关闭、部署堆栈(删除表)、打开并重新创建堆栈(重新创建表)。

这种技术的真正挑战不是表本身,而是 CloudFormation 堆栈中对该表的所有引用。您可能会在其他地方引用该表 - 例如,作为允许访问的 IAM 策略中的资源,在您的应用程序配置中指定表等。如果是这种情况,您将不得不更改这些位置也可以使用Fn::If 以与创建表相同的条件来控制引用的创建。这最终变得相当复杂,但可以通过 Fn::If{"Ref": "AWS::NoValue" } 的组合来完成。

我已经在 AWS 中进行了多年的开发,总的来说,我强烈建议我的开发人员构建一个高效的脚本来清除发电机表并使用它。通过删除所有项目来清除表并非易事,但它比条件化创建对堆栈中表的所有引用要简单得多。归根结底,重置表数据是一项不同于基础架构管理的操作任务,我建议您保持这种方式。 What is the recommended way to delete a large number of items from DynamoDB? 可能会让你开始。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 2018-10-01
    • 2021-04-22
    • 2021-06-29
    • 1970-01-01
    • 2022-01-19
    • 2019-03-08
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多