Terraform: как использовать результаты вызова Lambda в другом месте?

У меня есть лямбда, которая довольно хорошо вызывается во время terraform apply, и я получаю от нее хороший результат:

output "out_params_map" {
  description = "something"
  value = module.get_params.result_map
}

показывает правильный результат

terraform apply...
...
Outputs: 

out_params_map = [
  {
    "key1" = "val1"
    "key2" = "val2"
  },
]

Когда я пытаюсь использовать результат где-то еще, например,

resource "aws_security_group_rule" "this" {
  some_param = module.get_params.result_map.key1
}

оба terraform plan и terraform apply не работают:

Error: Unsupported attribute

  on file.tf line 32, in resource "aws_security_group_rule" "this":
  32:   some_param = module.get_params.result_map.key1
    |----------------
    | module.get_params.result_map is empty tuple

This value does not have any attributes.

Я также пробовал:

... = module.get_params.result_map[0].key1
... = jsondecode(module.get_params.result)["key1"]
... = module.get_params.result_map["key1"]

но это тоже не работает.

Дополнительный код можно найти здесь: https://pastebin.com/rQaDJstU

Итак, как использовать результаты вызова в другом месте?


person Putnik    schedule 18.09.2019    source источник
comment
Не могли бы вы показать полностью работоспособный минимальный воспроизводимый пример, пожалуйста? Из приведенного здесь более простого примера трудно понять, что может быть не так.   -  person ydaetskcoR    schedule 18.09.2019
comment
@ydaetskcoR С удовольствием, а какую часть вы хотите увидеть? Полный набор будет включать создание лямбды, и я сомневаюсь, что это имеет смысл. С другой стороны, если я опущу эту часть, тогда единственным кодом будет ресурс, который уже скопирован и вставлен.   -  person Putnik    schedule 18.09.2019
comment
Как у вас module.get_params.result_map? Откуда бы это ни пришло, это, вероятно, полезная часть.   -  person ydaetskcoR    schedule 18.09.2019
comment
@ydaetskcoR добавил ссылку, пожалуйста, дайте мне знать, если потребуется дополнительная информация.   -  person Putnik    schedule 18.09.2019
comment
@Putnik Удалось ли вам найти решение этой проблемы? Я столкнулся с аналогичной проблемой.   -  person ayip    schedule 25.06.2020


Ответы (1)


Допустим, вы определяете свою выходную переменную как V в модуле M, затем вы можете получить к ней доступ как

переменная = "$ {module.M.V}"

person Aman    schedule 18.09.2019
comment
Это не отвечает на вопрос. Они уже пробовали это, как видно из сообщения об ошибке. - person ydaetskcoR; 18.09.2019
comment
в v0.12 вам не нужно использовать $ {..}, просто имя переменной. - person Putnik; 18.09.2019