如何使用 Terraform 在 RDS MySQL 上执行 SQL 脚本?

Jul*_*lie 6 amazon-web-services amazon-rds terraform

我创建了aws_db_instance使用 Terraform 配置来配置 RDS MySQL 数据库。现在我的下一个问题是在 RDS 上执行 SQL 脚本(CREATE TABLE 和 INSERT 语句)。我做了以下但没有效果。terraform plan甚至看不到我在执行 sql 时所做的更改。我在这里错过了什么?谢谢。

resource "aws_db_instance" "mydb" {
  # ...

  provisioner "remote-exec" {
    inline = [
      "chmod +x script.sql",
      "script.sql args",
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

Geo*_*off 3

查看这篇文章:How to apply SQL Scripts on RDS with Terraform


如果您只是尝试设置用户和权限(您不应该使用生成 RDS 时设置的根密码),则有一个 terraform 提供程序:

https://www.terraform.io/docs/providers/mysql/index.html


但您正在寻找数据库架构和播种。该提供商不能这样做。

如果您愿意以其他方式进行操作,您可能需要使用 ssm 自动化文档和/或 lambda 进行检查。我会使用 lambda。选择一种您熟悉的语言。将 lambda 的角色设置为有权读取完成工作所需的密码。您可以将密码保存在 ssm 参数存储中。然后编写您的数据库工作脚本。

然后在 terraform 中执行本地执行,简单地调用 lambda 并向其传递 RDS 的 ID 以及 ssm 参数存储中密钥的路径。这将确保数据库操作是通过 VPC 内部的计算完成的,而无需为此目的设置 EC2 堡垒。

以下是 javascript 如何完成此操作,例如: https ://www.w3schools.com/nodejs/nodejs_mysql_create_table.asp