我正在嘗試設定一些 aws_ssoadmin_managed_policy_attachments (最終會有很多)所以理想情況下我只想能夠更新一個區域變數,然后使用 for_each 來遍歷所述變數并在另一端產生一堆資源。
我目前有以下內容:
locals {
roles = {
admin = {
//managed_policy_name = toset(["AdministratorAccess", "AWSSupportAccess"])
managed_policy_name = "AWSSupportAccess"
perm_set_name = "admin"
}
auditor = { ...
}
}
這里面會有更多的角色。我使用以下內容將其轉換為 for_each 更可用的東西。
managed_policy_map = [for keys, managed_policy_names in local.roles : {
for managed_policy_name in managed_policy_names :
format("%s-%s", keys, managed_policy_name) => { "managed_policy_name" : managed_policy_name }
}]
perm_set_to_managed_policy_map = merge(local.managed_policy_map...)
輸出:
a = [{
"admin-AWSSupportAccess" = {
"managed_policy_name" = "AWSSupportAccess"
"perm_set_name" = "admin"
}
"admin-admin" = {
"managed_policy_name" = "admin"
"perm_set_name" = "admin"
}
"auditor-ReadOnlyAccess" = {
"managed_policy_name" = "ReadOnlyAccess"
"perm_set_name" = "auditor"
}
"auditor-auditor" = {
"managed_policy_name" = "auditor"
"perm_set_name" = "auditor"
}
"auditor-auditor-permission-set" = {
"managed_policy_name" = "auditor-permission-set"
"perm_set_name" = "auditor"
}
},]
現在,理想情況下,我想使用帶注釋的 managed_policy_name ,它使用一個串列(或設定以避免重復)//managed_policy_name = toset(["AdministratorAccess", "AWSSupportAccess"])并回圈遍歷它以得到類似的結果。
a = [{
"admin-AdministratorAccess" = {
"managed_policy_name" = "AdministratorAccess"
"perm_set_name" = "admin"
}
"admin-AWSSupportAccess" = {
"managed_policy_name" = "AWSSupportAccess"
"perm_set_name" = "admin"
}
"auditor-ReadOnlyAccess" = {
"managed_policy_name" = "ReadOnlyAccess"
"perm_set_name" = "auditor"
} ...
這是可行的嗎?我的假設是它會相當復雜,或者我缺少一些使它變得容易的 Terraform 函式。任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以簡化變數結構:
locals {
roles = {
admin = toset(["AdministratorAccess", "AWSSupportAccess"])
auditor = ...
}
}
然后簡化你的for表達:
managed_policy_map = [for role, managed_policy_names in local.roles : {
for policy in managed_policy_names : "${role}-${policy}" => {
"managed_policy_name" = policy
"perm_set_name" = role
}
}]
set使用型別而不是型別輕松實作相同的輸出結構string:
[
{
"admin-AWSSupportAccess" = {
"managed_policy_name" = "AWSSupportAccess"
"perm_set_name" = "admin"
}
"admin-AdministratorAccess" = {
"managed_policy_name" = "AdministratorAccess"
"perm_set_name" = "admin"
}
},
]
我還建議for_each根據問題中所述的意圖簡化輸出結構,以便在元引數中更容易使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/437214.html
標籤:变量 前锋 地形 terraform0.12
