能否在创建堆栈后创建aws dynamodb资源并将其附加到cloudformation堆栈?
用例:我有一个想要擦拭干净的dynamodb桌子(删除所有物品)。做到这一点的两种方法是删除然后重新创建表,或者分别删除每个项目,这很昂贵。因此,我想选择删除并重新创建整个表。但是,该资源属于cloudformation堆栈,我想保持这种方式。
有什么想法吗?
答案 0 :(得分:2)
通过简单地从模板中删除资源,或者从一些更清洁的解决方案中,在cloudformation资源上使用Condition来将表切换到堆栈上,从堆栈资源中删除表就很容易了。或关闭。然后,您可以关闭,部署堆栈(删除表),打开并重新创建堆栈(重新创建表)。
此技术的真正挑战不是表本身,而是CloudFormation堆栈中对该表的所有引用。您可能会在其他地方引用该表-例如,作为IAM策略中允许访问的资源,在应用程序配置中指定表等,如果是这种情况,则必须更改这些位置同样,也可以使用Fn::If
以创建表的相同条件来控制引用的创建。这最终变得相当复杂,但是可以结合使用Fn::If
和{"Ref": "AWS::NoValue" }
来完成。
我在AWS中从事开发工作已经有好几年了,总的来说,我强烈建议开发人员构建高效的脚本来清除dynamo表并使用它。通过删除所有项来清除表并不是一件容易的事,但是比有条件地限制对堆栈中表的所有引用的创建要简单得多。归根结底,重置表数据是一项与基础架构管理不同的操作任务,我建议您保持这种方式。 What is the recommended way to delete a large number of items from DynamoDB?可能会让您入门。