CloudFormation:用于创建数据库,表,用户或加载架构的模板RDS Mysql

时间:2014-10-29 21:48:19

标签: mysql amazon-web-services amazon-rds amazon-cloudformation

使用CloudFormation,我试图找出一些用例。

第一种情况是拥有现有的AWS RDS MySQL服务器,如何通过CloudFormation模板创建数据库,表和用户帐户。

在查看了Cloudformation文档后,我想可能会有一个 允许我执行此操作的AWS::RDS::DBInstance属性;但是,虽然我找不到如何指定允许的数据库主机源(或者我可能误读了它)。

aws-properties-rds-database-instance

然后,从AWS查看Cloudformation RDS模板,我看到一个突出的fn::join命令。我的第一个案例是用fn::join吗?

"UserData": { "Fn::Base64": { "Fn::Join": ["", [....

接下来,在第二种情况下,我也很难找到如何使用现有的RDS MySQL服务器,从MySQL mysqldump加载一个方案。

我已经查看了上面链接中的文档以获取答案,但不太确定。我注意到AWS模板主要允许您创建资源。

最后,为了解决上述两种情况,我一直在阅读它可以或应该(?)使用两种工具方法,通过使用AWS CloudFormation模板并调用Chef。

思想?

1 个答案:

答案 0 :(得分:3)

简短的回答是:你现在不能在实例创建时自动运行SQL查询(将来,谁知道......)。

我会用以下方法来解决这个经典问题:

  • 使用EC2运行您需要的MySQL代码(不确定是否需要在EC2中放置“DependsOn”子句,因为您必须使用GetAtt引用RDS端点,这可能会隐含DependsOn子句)。只要您以某种方式传递RDS端点,就可以将其放在用户数据或任何所需的脚本中。当然,您需要在EC2上安装MySQL客户端软件包。

正如您所写,CloudFormation允许您创建AWS资源,但这些资源的数量取决于您。再次,一个MySQL客户端将完成这个技巧(因为MySQL转储只不过是文件中的SQL代码,与初始要求相同)。

使用Chef或Puppet无法单独解决您的问题,因为两者都需要在EC2上安装代理,您无法在RDS服务器中运行代理。因此,您可以使用Chef或Puppet代理来使用EC2,然后启动MySQL脚本,但这不会比以前的解决方案提供更多的内容