Новое в terraform - ошибка парсинга при попытке интеграции с AWS менеджером секретов - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь интегрироваться с AWS менеджером секретов с помощью terraform. Я новичок в terraform, но я просмотрел множество примеров в Интернете, и кажется, что он должен работать, но я получаю сообщение об ошибке:

" error parsing local value "master_username" at 10:21: parse error at 1:113: expected : but found "["[0m[0m". 

Кто-нибудь может сказать мне, где я ошибаюсь?

  master_username = "${local.source_region == "" ? jsondecode(data.aws_secretsmanager_secret_version.username_password.secret_string)["db.username"] : ""}"
  master_password = "${local.source_region == "" ? jsondecode(data.aws_secretsmanager_secret_version.username_password.secret_string)["db.password"] : ""}"

data "aws_secretsmanager_secret" "username_password" {
  name = "${
    join("/", list(
      "",
      var.stack_env,
      var.service_name
    ))
  }"
}

data "aws_secretsmanager_secret_version" "username_password" {
  secret_id = "${data.aws_secretsmanager_secret.username_password.id}"
}

Я должен отметить, что секрет диспетчера секретов существует с именем «/ dev / service» и содержит значения ключей для db.username и db.password

1 Ответ

0 голосов
/ 09 июля 2020

Проблема закончилась тем, что я использовал версию terraform (0.10.X), а для использования декодирования json terraform должна быть как минимум версии 0.12.X. Чтобы исправить это, используя старую версию terraform, мне пришлось получить к ней доступ, используя внешние переменные, как показано ниже

data "external" "username_password" {
  program = ["echo", "${replace(data.aws_secretsmanager_secret_version.username_password.secret_string, "\\\"", "\"")}"]
}

  master_username = "${local.source_region == "" ? data.external.username_password.result["db.username"] : ""}"
  master_password = "${local.source_region == "" ? data.external.username_password.result["db.password"] : ""}"
...