使用Terraform创建ElasticSearch域时出错-只需一个子网

时间:2020-01-02 22:04:42

标签: elasticsearch terraform

我今天可能遇到了一些冲突的文档。

在使用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"
}

1 个答案:

答案 0 :(得分:0)

原始的AWS文档(https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-vpc.html)解释了Terraform行为背后的结构。如果每个ES域都位于一个可用区中,则它只能连接到一个子网。如果在ES中启用了Multi_AZ模式,则可以提供第二个子网,然后该子网必须位于ES群集跨的另一个AZ中。