这里是 CloudFormation 业余爱好者。在网上查找时,找不到任何关于在通过 CloudFormation 建立 RDS 实例后如何创建表的引用资料。是否可以指定 Lambda 来启动并创建所有表,或者指定要应用的 SQL 文件?这方面的标准模式是什么?
最佳答案
创建 RDS 实例后,没有任何 CloudFormation 资源可以处理 RDS 实例的“内部”;它是一个黑匣子,您需要在 CloudFormation 外部对其进行配置(包含用户、表和数据)。这有点令人悲伤,因为版本控制、管理和部署数据库模式是基础设施和应用程序之间边界上的经典部署问题,这也正是 CloudFormation 所在的位置(作为版本控制、管理和部署其他基础设施的工具)。
尽管这不是初学者级别的功能,但您可以做的是使用 custom resource创建 RDS 实例后连接到它,并运行适当的 SQL 命令来创建用户和表。您在 CloudFormation 模板中定义架构(作为 SQL 或类似于 DynamoDB AtributeDefinitions
的更结构化的描述),并将该架构传递给您的自定义资源 lambda 函数,然后该函数在数据库中运行查询。
如果您沿着这条路线走下去,您可能会做大量的发明工作,如何将“before”和“after”模式中的差异转换为 ALTER TABLE
SQL 语句来触发在数据库中。您的自定义资源 lambda 代码需要非常强大,并且始终将响应发送回 CloudFormation,即使出现错误也是如此。并且不要忘记,如果您的堆栈更新由于任何原因失败,CloudFormation 将再次“反向”调用您的自定义资源(即要求您将数据库从更新后架构更改回更新前架构)作为一部分回滚过程。
如果您确实沿着这条路走下去并想出一些可靠的东西,请发布它,因为我确信很多人都会对此感兴趣!我在网上快速浏览了一下,但找不到任何明显预先存在的东西。
关于amazon-web-services - AWS CloudFormation - RDS 实例准备就绪后创建表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437074/