我今天可能遇到了一些冲突的文档。
在使用vpc选项创建Elastic Search域时,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群集指定两个私有子网。
有没有办法做到这一点 ?我在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"
}
答案 0 :(得分:0)
原始的AWS文档(https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html)解释了Terraform行为背后的结构。如果每个ES域都位于一个可用区中,则它只能连接到一个子网。如果在ES中启用了Multi_AZ模式,则可以提供第二个子网,然后该子网必须位于ES群集跨的另一个AZ中。