【问题标题】:Error creating ElasticSearch domain: ValidationException: Authentication error创建 ElasticSearch 域时出错:ValidationException:身份验证错误
【发布时间】:2020-01-07 21:53:10
【问题描述】:

我最近在使用 Terraform 创建 ES 域时遇到此错误。我定义 ES 域的方式没有任何改变。然而,我确实开始在 ALB 层上使用 SSL(AWS ACM 证书),但这不应该影响这一点。任何想法它可能会抱怨什么?

resource "aws_elasticsearch_domain" "es" {
  domain_name = "${var.es_domain}"
  elasticsearch_version = "6.3"

  cluster_config {
      instance_type = "r4.large.elasticsearch"
      instance_count = 2
      zone_awareness_enabled = true
  }

  vpc_options {
      subnet_ids = "${var.private_subnet_ids}"
      security_group_ids = [
          "${aws_security_group.es_sg.id}"
      ]
  }

  ebs_options {
      ebs_enabled = true
      volume_size = 10
  }

  access_policies = <<CONFIG
{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Action": "es:*",
          "Principal": "*",
          "Effect": "Allow",
          "Resource": "arn:aws:es:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:domain/${var.es_domain}/*"
      }
  ]
}
  CONFIG

  snapshot_options {
      automated_snapshot_start_hour = 23
  }

  tags = {
      Domain = "${var.es_domain}"
  }

  depends_on = [
    "aws_iam_service_linked_role.es",
  ]
}

resource "aws_iam_service_linked_role" "es" {
  aws_service_name = "es.amazonaws.com"
}

编辑:奇怪的是,当我使用 ACM 证书删除并重新为我的 ALB 侦听器使用 HTTP(端口 80)时,ES 域已配置。

不知道该怎么做,但显然 ACM 证书正在干扰 ES 域的创建。或者我在创建 ACM 时做错了什么。以下是我的做法和使用方法 -

resource "aws_acm_certificate" "ssl_cert" {
  domain_name       = "api.xxxx.io"
  validation_method = "DNS"

  tags = {
    Environment = "development"
  }

  lifecycle {
    create_before_destroy = true
  }

}

resource "aws_alb_listener" "alb_listener" {
  load_balancer_arn = "${aws_alb.alb.id}"
  port              = "443" 
  protocol          = "HTTPS" 
  ssl_policy        = "ELBSecurityPolicy-2016-08"
  certificate_arn = "${aws_acm_certificate.ssl_cert.arn}"

  default_action {
    target_group_arn = "${aws_alb_target_group.default.id}"
    type             = "forward"
  }
}

据我在控制台中看到的,证书由 AWS 快速验证和颁发。正如所见,它与 ES 域无关。

【问题讨论】:

  • 你得到的完整错误是什么?您是否同时创建了这两个(例如相同的目录和状态文件)?
  • @ydaetskcoR - 这确实是完整的错误。是的,我正在同一目录和状态文件中创建 ALB + ACM 证书和 ES。

标签: elasticsearch terraform aws-acm


【解决方案1】:

在启用服务相关角色之前创建 ES 域时,有时会发生这种情况,即使使用了 depends_on。

也许你可以尝试使用 local-exec provisioner 来等待。

resource "aws_iam_service_linked_role" "es" {
  aws_service_name = "es.amazonaws.com"
  provisioner "local-exec" {
    command = "sleep 10"
  }
}

【讨论】:

    【解决方案2】:

    下面一个就足够创建服务相关角色了,还包括depends_on中的角色

    resource "aws_iam_service_linked_role" "es" {
      aws_service_name = "es.amazonaws.com"  
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-15
      • 2020-07-10
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多