无法在 Terraform 提供程序配置中动态检索 RDS 集群端点

问题描述 投票:0回答:1

当发生需要销毁数据库并通过启用加密或重命名数据库等更新重新创建的更改时,我在 Terraform 提供程序配置中动态检索 RDS 集群端点时遇到问题。

这是我的 Terraform 配置的相关部分:

provider "postgresql" {
  host             = module.rds_cluster.endpoint
  port             = var.db_port
  database         = var.db_name
  username         = var.admin_user
  password         = var.admin_password
  superuser        = false
  expected_version = var.engine_version
}

尽管配置

module.rds_cluster.endpoint
来动态获取 RDS 集群端点,Terraform 仍将其替换为本地主机 IP 地址。但是,当我对端点进行硬编码时,它工作得很好。

错误:

Error: Error connecting to PostgreSQL server  (scheme: postgres): dial tcp 127.0.0.1:5432: connect: connection refused

错误来自以下资源,

resource "postgresql_role" "iam_user" {
  name            = var.db_user
  login           = true
  roles           = ["rds_iam"]
  create_database = true
  create_role     = true
  inherit         = true

  depends_on = [
    module.rds_cluster
  ]
}

详情:

我正在使用, rds_cluster==1.3.1

Terraform 和提供商信息:

Terraform v1.5.5
on darwin_arm64
+ provider registry.terraform.io/cyrilgdn/postgresql v1.22.0
+ provider registry.terraform.io/hashicorp/archive v2.4.2
+ provider registry.terraform.io/hashicorp/aws v5.41.0
+ provider registry.terraform.io/hashicorp/kubernetes v2.27.0
+ provider registry.terraform.io/hashicorp/null v3.2.2
+ provider registry.terraform.io/hashicorp/random v3.6.0
+ provider registry.terraform.io/hashicorp/tls v4.0.5

任何有关故障排除或解决问题的见解都是有帮助的,值得赞赏!

amazon-web-services terraform amazon-rds
1个回答
0
投票

我认为您需要告诉提供商使用

awspostgres
模式。以下是向
postgresql
提供程序提供配置的方法:

provider "postgresql" {
  host      = split(":", module.rds_cluster.endpoint)[0]
  port      = split(":", module.rds_cluster.endpoint)[1]
  scheme    = "awspostgres"
  username  = var.admin_user
  password  = var.admin_password
  superuser = false
}
© www.soinside.com 2019 - 2024. All rights reserved.