Aws lambda Terraform:如何在其他地方使用Lambda调用的结果?

Aws lambda Terraform:如何在其他地方使用Lambda调用的结果?,aws-lambda,terraform,terraform-provider-aws,Aws Lambda,Terraform,Terraform Provider Aws,我有一个lambda,它在terraformapply期间被很好地调用,我从中得到了很好的输出: output "out_params_map" { description = "something" value = module.get_params.result_map } 它显示了正确的结果 terraform apply... ... Outputs: out_params_map = [ { "key1" = "val1" "key2" = "val2

我有一个lambda,它在
terraformapply
期间被很好地调用,我从中得到了很好的输出:

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
}
地形平面图
地形应用
均失败:

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"]
但它也不起作用

更多代码可在此处找到:


那么,如何在其他地方使用调用的结果呢?

假设您在模块M中将输出变量定义为V,然后您可以作为

variable=“${module.M.V}”


假设您在模块M中将输出变量定义为V,那么您可以将其作为

variable=“${module.M.V}”


这并不能回答问题。正如错误消息所示,他们已经尝试过了。在v0.12中,您不必使用“${..}”,只需使用变量名。这并不能回答问题。从错误消息中可以看出,他们已经尝试过了。在v0.12中,您不必使用“${..}”,只需使用变量名即可。您能给出一个完全可行的示例吗?很难从你这里的一个更简单的例子中看出什么是错误的。@ydaetskcoR,我很乐意,但是你想看哪一部分呢?全套将包括lambda创作,我怀疑这是有道理的。另一方面,如果我省略了这一部分,那么唯一的代码就是资源已复制粘贴。您如何获得
模块.get_params.result_map
?无论它来自何处,都可能是有用的部分。@ydaetskcoR添加了链接,如果需要更多详细信息,请告诉我。@Putnik您能找到解决方案吗?我面临着类似的问题。你能拿出一个完全可行的方案吗?很难从你这里的一个更简单的例子中看出什么是错误的。@ydaetskcoR,我很乐意,但是你想看哪一部分呢?全套将包括lambda创作,我怀疑这是有道理的。另一方面,如果我省略了这一部分,那么唯一的代码就是资源已复制粘贴。您如何获得
模块.get_params.result_map
?无论它来自何处,都可能是有用的部分。@ydaetskcoR添加了链接,如果需要更多详细信息,请告诉我。@Putnik您能找到解决方案吗?我也面临类似的问题。