Не удается создать домен 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.

person user6826691    schedule 22.12.2020    source источник


Ответы (1)


Чтобы ElasticSearch (ES) мог записывать журналы CloudWatch (CW), необходимо предоставить на основе ресурсов в ваших журналах CW.

Это достигается с помощью aws_cloudwatch_log_resource_policy, который отсутствует в вашем код.

На самом деле, в документах TF есть готовый пример того, как это сделать для ES, поэтому вы сможете просто скопировать и вставить его.

ES политики доступа отличаются от журнала CW политики, так как они определяют, кто и что может делать в вашем домене ES. Таким образом, вам придется настроить эту часть вашего кода в соответствии с вашими требованиями.

person Marcin    schedule 22.12.2020