AWS RDS 连接字符串

Posted

技术标签:

【中文标题】AWS RDS 连接字符串【英文标题】:AWS RDS connection string 【发布时间】:2022-01-08 07:25:37 【问题描述】:

我有一个问题。

所以我正在尝试使用 terraform 自动化我的 RDS 连接字符串,但数据库标识符是在每个 aws 帐户中的每个区域随机生成的。

是否可以事先知道数据库标识符?如果是这样,我有办法自动化吗?

以下是我当前的脚本:

sudo socat TCP-LISTEN:5432,reuseaddr,fork TCP4:env0.**cvhjdfmcu7ed**.us-east-1.rds.amazonaws.com:5432

我目前正在使用以下脚本将变量输入到我的 userdata tpl 文件中的 terraform

sudo nohup socat TCP-LISTEN:$port,reuseaddr,forkTCP4:$name.$connection.$aws_region.rds.amazonaws.com:$port

如果这里有人可以建议我可以用来自动化 $connection 变量的方法,以便我可以将它部署在任何 aws 帐户和区域中,而不必担心标识符可能是什么。

【问题讨论】:

连接端点在创建的RDS实例的Endpoint.Addressattribute中可用。毫无疑问,Terraform 提供了一种获取此值的方法(在 CloudFormation 中,您将使用 GetAtt 内在函数)。 【参考方案1】:

您可以使用aws_db_instance 或aws_rds_cluster Terraform 资源中的endpoint 属性来访问 Terraform 中的hostname:port RDS 端点。

如果您没有在需要访问端点地址的同一 Terraform 中创建/管理 RDS 实例,那么您将使用适当的 Terraform datasource 而不是 Terraform resource,这将查找 RDS 信息并使端点值在 Terraform 模板的其余部分中可用。

【讨论】:

Mark B,感谢您的回复,数据查找会是这样吗? data "aws_db_instance" "database" db_instance_identifier = var.name endpoint = "address:port" 然后像这样引用它?连接 = data.aws_db_instance.database.endpoint 不,您不会在查找中找到endpoint。您只需根据您拥有的值查找它,然后再引用端点,例如data.aws_db_instance.database.endpoint 非常感谢它的工作,节日快乐

以上是关于AWS RDS 连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

AWS RDS SQL 数据库在本地主机上工作——从服务器抛出错误

.NET Core AWS RDS 连接

如何连接mysql数据库(AWS下的RDS实例)

PGAdmin III 无法连接 AWS RDS

Python AWS Lambda 为每个部署旋转到 RDS 的新连接

连接 pgadmin AWS-RDS 时遇到问题