【发布时间】:2021-10-07 15:12:23
【问题描述】:
我在AWS secret manager 上有secrets,我必须在terraform 上检索这些secrets。
我正在使用data 来检索secrets,我收到JSON 以及在AWS secret manager 上配置的所有secrets:
data "aws_secretsmanager_secret_version" "secrets_manager_rds" {
secret_id = "rds-sm"
}
为了解析这个JSON,我在locals上使用jsondecode:
locals {
rds = jsondecode(data.aws_secretsmanager_secret_version.secrets_manager_rds.secret_string)
}
现在我可以通过在rds-sm 秘密中指定secret key (password_rds) 来获取秘密:
local.rds.password_rds
我希望能够在不指定特定secret key 的情况下循环遍历JSON,例如,将for_each 与jsoncode 输出一起使用。
我需要循环使用for_each 的资源。例如:
resource "postgresql_role" "test" {
for_each = [for k in local.rds : k]
name = each.key
password = each.value
login = true
skip_reassign_owned = true
roles = ["readonlyrole"]
}
我收到:
local.users_creds has a sensitive value
Sensitive values, or values derived from sensitive values, cannot be used as for_each arguments. If used, the sensitive
value could be exposed as a resource instance key.
有可能吗?
【问题讨论】:
-
你的密码串是什么样子的?
-
我收到了包含所有秘密的 json。例如:
{"secret_string": {"secretname1": "secretvalue1","secretname2": "secretvalue2"}} -
jsondecode生成 tf 映射。您可以像任何其他地图一样循环它。我不确定那是什么问题?你有没有特别尝试过什么?有什么错误吗? -
@Marcin 我已经更新了问题
标签: postgresql terraform terraform-provider-aws aws-secrets-manager