terraform - Terraform:如何阅读地图列表?
问题描述
请参见下面的示例:
data "aws_kms_secrets" "api_key" {
count = "${length(keys(var.keys))}"
secret {
name = "secret_name"
payload = "${element(values(var.keys), count.index)}"
}
}
resource "aws_api_gateway_api_key" "access_key" {
count = "${length(keys(var.keys))}"
name = "${var.environment}-${element(keys(var.keys), count.index)}"
value = "${lookup(element(data.aws_kms_secrets.api_key.*.plaintext, count.index), "secret_name")}"
}
从数据资源中查找明文值似乎是不可能的。
value = "${lookup(element(data.aws_kms_secrets.api_key.*.plaintext, count.index), "secret_name")}"
结果是lookup: argument 1 should be type map, got type string in:
我尝试了许多, , 和字典语法的组合element
,但没有任何效果。lookup
*
我的var.keys
样子:
keys = {
key-name-one = "sssss"
key-name-two = "sss"
}
解决方案
这里的技巧是使用字典语法来替换元素调用,它在映射列表中表现得更好。
value = "${lookup(data.aws_kms_secrets.api_key.*.plaintext[count.index], "secret_name")}"
这样做的诱惑data.aws_kms_secrets.api_key[count.index].plaintext
是无效的 HCL
推荐阅读
- c# - 将图像(以字节为单位)上传到 HTTP 服务器时出错
- r - 如何在情节图例中将框居中放在行的顶部?
- java - 如何让安卓应用的图标背景透明?
- javascript - 如何从 Redux 商店获取状态
- json - jq 命令解析无效的 JSON(数字用空格分隔)
- mysql - MySQL 形成 JSON_OBJECT,在 NULL 上指定不存在 - 可能吗?
- php - mongodb 如何在lampp(Ubuntu)中安装PHP驱动
- css - 将旧的 MSO 编码转换为外部 CSS
- python - 完全删除重复数据而不维护一个
- azure - com.microsoft.windowsazure.mobileservices.MobileServiceException: {'code': 400}