我是 Terraform 的新手。
我有兩個物件串列,我想將它們合并為 terraform 中的地圖:
locals {
d_streams = [for idx, item in module.website_s3_bucket : {
format("%s-%s", "s3-audit", item.name) = {
a = "b"
c = item.name
}
}
]
dev_d_streams = [for idx, item in module.website_s3_bucket : {
format("%s-%s", "s3-audit-dev", item.name) = {
g = "b"
f = item.name
}
}
]
// it will be used somewhere in the module later
test = merge(local.d_streams, local.d_streams)
}
module "website_s3_bucket" {
for_each = toset(["c1", "c2"])
source = "./modules/aws-s3-static-website-bucket"
bucket_name = "robin-test-dec-17-2019"
mytest = local.test
tags = {
Terraform = "true"
Environment = "dev"
}
}
當我運行時terraform console,出現以下錯誤:
| local.d_streams is tuple with 2 elements
Call to function "merge" failed: arguments must be maps or objects, got
"tuple".
我理解這一點,d_streams并且dev_d_streams是串列,不可能將它們合并為一張地圖。
如何回圈通過 d_streams 和 dev_d_streams 以便它可以形成地圖?
uj5u.com熱心網友回復:
您的語法創建地圖串列,而不是地圖。創建地圖的正確方法是:
d_streams = {for idx, item in module.website_s3_bucket :
format("%s-%s", "s3-audit", item.name) => {
a = "b"
c = item.name
}
}
dev_d_streams = {for idx, item in module.website_s3_bucket :
format("%s-%s", "s3-audit-dev", item.name) => {
g = "b"
f = item.name
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437971.html
