我今天可能遇到了一些相互矛盾的文档。
在使用 vpc 选项创建 Elasticsearch 域时,HashiCorp Terraform 官方文档 (https://www.terraform.io/docs/providers/aws/r/elasticsearch_domain.html) 说子网是一个列表,甚至在他们的示例中指定了 2 个子网。但是,当我指定 2 个子网时出现错误(我尝试了 2 种不同的方式来指定子网列表) -
vpc_options {
subnet_ids = "${var.private_subnet_ids}"
OR
subnet_ids = [
"${var.private_subnet_ids[0]}",
"${var.private_subnet_ids[1]}"
]
他们都给了我同样的错误-
Error: Error creating ElasticSearch domain: ValidationException: You must specify exactly one subnet.
status code: 400, request id: 98b49b34-2da8-11ea-8114-e9488cc7cb63
on modules/es/main.tf line 51, in resource "aws_elasticsearch_domain" "es":
51: resource "aws_elasticsearch_domain" "es" {
如果我指定一个子网,它工作正常。
subnet_ids = ["${var.private_subnet_ids[0]}"]
但是,我确实希望能够为 ES 集群指定我的两个私有(private)子网。
有没有办法做到这一点 ?我在 github 上注意到了几个问题,但解决方案是 Terraform 文档中的内容,这对我不起作用。我正在使用
v0.12.17
以防万一。变量
private_subnet_ids
是一个列表variable "private_subnet_ids" {
type = "list"
description = "The list of private subnets to place the instances in"
}
最佳答案
原始 AWS 文档 (https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html) 解释了 Terraform 行为背后的结构。如果每个 ES 域位于单个可用区中,则它只能连接到一个子网。如果您在 ES 中启用了 Multi_AZ 模式,则可以提供第二个子网,该子网必须位于 ES 集群所跨越的另一个 AZ 中。
关于elasticsearch - 使用 Terraform 创建 ElasticSearch 域时出错 - 只需要一个子网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59570617/