Terraform比较键两个不同的地图并复制值

时间:2020-10-10 19:11:23

标签: terraform terraform-provider-aws

我有一个输出地图module.platformusers.paths的模块,如下所示:

{
    "user1_test" = "user1_value_path"
    "user2_test" = "user2_value_path"
    "user3_test" = "user3_value_path"
}

我必须遍历local.musyers映射并获取密钥并与module.platformusers.paths密钥进行比较,如果密钥包含在第二个映射中,那么我必须复制值

{
    "user1" = "Allen"
    "user2" = "john"
    "user3" = "Rose"
}

我要假设自己是个体的

resource "aws_ssm_parameter" "userspath" {
  name  = "Allen"
  type  = "String"
  value = "user1_value_path"
}

resource "aws_ssm_parameter" "userspath" {
  name  = "john"
  type  = "String"
  value = "user2_value_path"
}

resource "aws_ssm_parameter" "userspath" {
  name  = "Rose"
  type  = "String"
  value = "user3_value_path"
}

我正在按此处所示进行尝试,但由于我的密钥不完全匹配而无法正常工作

resource "aws_ssm_parameter" "userspath" {
  for_each =  module.platformusers.paths
  name  = ${each.value}
  type  = "String"
  value = lookup( module.platformusers.paths,  ${each.key}, "")
}

如何在此处申请包含?

1 个答案:

答案 0 :(得分:0)

也许有更好的方法可以做到这一点,但这是我能想到的一种快速方法。 如果键的差异只是上面显示的“ _test”,那么实际上可能很简单。您可以使用格式功能添加“ _test”并进行查找。

在您的示例代码中,您没有针对local.musyers进行循环。 注意:它区分大小写。您可以使用UPPER函数使其不敏感。

resource "aws_ssm_parameter" "userspath" {
  for_each =  local.musyers
  name  = ${each.value}
  type  = "String"
  value = lookup(module.platformusers.paths, format("%s_test", each.key) , "missing")
}