【问题标题】:CloudFormation : Template RDS Mysql to Create DB, Tables, User, or Load SchemaCloudFormation : 用于创建数据库、表、用户或加载模式的模板 RDS Mysql
【发布时间】:2014-12-25 19:13:08
【问题描述】:

使用 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 的两种工具方法来完成。

想法?

【问题讨论】:

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


【解决方案1】:

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

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

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

正如您所写,CloudFormation 允许您创建 AWS 资源,但填充这些资源取决于您。再一次,MySQL 客户端可以解决问题(因为 MySQL 转储只是文件中的 SQL 代码,与您的初始要求相同)。

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

【讨论】:

  • 今天,使用 Lambda 函数 + CustomResource 比 EC2 实例更有意义
猜你喜欢
  • 2020-11-02
  • 2012-05-09
  • 2017-05-12
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 2018-08-26
  • 1970-01-01
相关资源
最近更新 更多