Логика сохранения облачных часов Terraform - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь добавить логику в мой скрипт terraform, чтобы при создании лямбды добавлялась логика хранения CW, чтобы наши журналы очищались через 30 дней. Я вижу, что при запуске terraform для обновления существующей лямбды (которая была развернута до того, как была добавлена ​​моя новая логика хранения) моя работа завершается с ошибкой ниже.

  • aws_cloudwatch_log_group.lambda-deploy: 1 произошла ошибка:

  • aws_cloudwatch_log_group.lambda-deploy: Ошибка создания группы журналов CloudWatch: ResourceAlreadyExistsException: указанная группа журналов уже существует, код состояния: 400, идентификатор запроса: e500eb50-4a81-11e9-9c08-7152b4a0ad31: группа журналов CloudWatch '/ aws / lambda / {lambda-name} 'уже существует.

Ниже показано, как мне настроить мой код terraform:

resource "aws_lambda_function" "lambda-deploy" {
  filename      = "${var.filename}"
  function_name = "${var.functionname}"
  role          = "${var.role}"
  handler       = "${var.handler}"
  runtime       = "${var.runtime}"
  publish       = "${var.publish}"
  memory_size   = "${var.memory_size}"
  timeout       = "${var.timeout}"
  description   = "${var.description}"

  layers = "${var.layers}"

  environment {
    variables = "${var.envVars}"
  }

  tags {
    PLATFORM        = "${var.tag_PLATFORM}"
    BUSINESS_UNIT   = "${var.tag_BUSINESS_UNIT}"
    CLIENT          = "${var.tag_CLIENT}"
    BUSINESS_REGION = "${var.tag_BUSINESS_REGION}"
  }

  vpc_config {
    subnet_ids         = "${var.subnet_ids}"
    security_group_ids = "${var.security_group_ids}"
  }
}

#Below logic will add cloud watch retention logic so logs rotate after 30 days.
resource "aws_cloudwatch_log_group" "lambda-deploy" {
  name              = "/aws/lambda/${aws_lambda_function.lambda-deploy.function_name}"
  retention_in_days = "30"
}

У меня вопрос: возможно ли для ресурса aws_cloudwatch_log_group проверить, была ли создана группа cloudwatch, и просто обновить политику хранения вместо попытки создания группы журналов?

1 Ответ

0 голосов
/ 20 марта 2019

Поскольку вы не показываете нам политику роли iam для лямбда-функции, я должен догадаться.

Мне кажется, что роль iam и политика для лямбды имеют разрешение logs:CreateLogGroup.Поэтому лямбда-функция позаботится о creating log group if not exist.

. При обновлении эта группа журналов не управляется terraform, она сообщит о проблеме.

Не могли бы вы удалить разрешение logs:CreateLogGroupи удалите группу журналов, затем повторите попытку?

...