在 terraform 中获取 AWS ElastiCache Redis 集群的 IP 地址

Get IP address of AWS ElastiCache Redis cluster in terraform

我在 AWS ElastiCache 中有一个 Redis 集群

resource "aws_elasticache_replication_group" "custom-redis-cluster" {
...
}

我想访问它所有集群的IP。 我尝试使用 dns_a_record_set 从 DNS 名称手动获取 IP 地址 但效果不佳。

data "dns_a_record_set" "esg-redis-data" {
  host = "custom-redis-cluster.abcd1e.clustercfg.use2.cache.amazonaws.com"
}

variable "custom-redis-cluster-addrs" {
  type = list(string)
  value = data.dns_a_record_set.custom-redis-cluster.addrs
}

错误

Error: Unsupported argument

  on endpoint.services.tf line 37, in variable "custom-redis-cluster-addrs":
  37:   value = data.dns_a_record_set.custom-redis-cluster.addrs

如何从 Terraform 获取所有 Redis 集群的 IP 地址?

有没有办法动态获取 Redis 集群 DNS 名称而不是硬编码?

不能使用变量来定义custom-redis-cluster-addrs变量。 但是你可以创建一个 local:

locals {
    custom-redis-cluster-addrs = data.dns_a_record_set.custom-redis-cluster.addrs
}

并在需要时将其用作 local.custom-redis-cluster-addrs