微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 terraform 创建 elasticSearch 域

如何解决无法使用 terraform 创建 elasticSearch 域

我正在尝试使用 terraform 创建 elasticsearch 集群。

使用 terraform 0.11.13

请有人指出为什么我无法创建日志组?什么是资源访问策略?它与我正在创建的数据“aws_iam_policy_document”相同吗?

注意:我使用的是 elasticsearch_version = "7.9"

代码

resource "aws_cloudwatch_log_group" "search_test_log_group" {
  name = "/aws/aes/domains/test-es7/index-logs"
}

resource "aws_elasticsearch_domain" "amp_search_test_es7" {
  domain_name           = "es7"
  elasticsearch_version = "7.9"

  .....
  log_publishing_options {
    cloudwatch_log_group_arn = "${aws_cloudwatch_log_group.search_test_log_group.arn}"
    log_type                 = "INDEX_SLOW_LOGS"
    enabled                  = true
  }


  access_policies = "${data.aws_iam_policy_document.elasticsearch_policy.json}"
}

data "aws_iam_policy_document" "elasticsearch_policy" {
  version = "2012-10-17"

  statement {
    effect = "Allow"

    principals {
      identifiers = ["*"]
      type        = "AWS"
    }

    actions   = ["es:*"]
    resources = ["arn:aws:es:us-east-1:xxx:domain/test_es7/*"]
  }

  statement {
    effect = "Allow"

    principals {
      identifiers = ["es.amazonaws.com"]
      type        = "Service"
    }

    actions = [
      "logs:PutLogEvents","logs:PutLogEventsBatch","logs:CreateLogStream",]

    resources = ["arn:aws:logs:*"]
  }
}

我收到此错误

aws_elasticsearch_domain.test_es7: Error creating ElasticSearch domain: ValidationException: The Resource Access Policy specified for the CloudWatch Logs log group /aws/aes/domains/test-es7/index-logs does not grant sufficient permissions for Amazon Elasticsearch Service to create a log stream. Please check the Resource Access Policy.

解决方法

要使 ElasticSearch (ES) 能够写入 CloudWatch (CW) 日志,您必须为 CW 日志提供 resource-based 策略。

这是使用代码中缺少的 aws_cloudwatch_log_resource_policy 实现的。

事实上,TF 文档有一个关于如何为 ES 执行此操作的现成示例,因此您应该能够复制和粘贴它。

ES access policies 与 CW 日志策略不同,因为它们决定谁可以在您的 ES 域上做什么。因此,您必须调整该部分代码以满足您的要求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?