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

标签 elasticsearch terraform

我今天可能遇到了一些相互矛盾的文档。

在使用 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/

相关文章:

python - 如何在不更改类型的情况下从 SearchQuerySet 获取 n 个搜索对象?

elasticsearch - Elasticsearch-将字符串拆分为不带空格或特殊字符的常见单词

elasticsearch - Elasticsearch GET q参数与查询语言主体

java - 在 "spring-data-elasticsearch"4.0.4.RELEASE 中,如何将 SearchHits 转换为 Page?

amazon-web-services - 在与创建角色的文件夹不同的文件夹中访问 role_arn

azure - 在 TF 中引用 map 对象

linux - 在 Bash Cloud Shell 中映射 Azure 文件共享

java - 使用 JDBC River 插入自定义索引

go - Golang中的Terraform列表对象

Terraform:如何从对象列表创建 API 网关端点和方法?