![](/img/trans.png)
[英]How i get any value from the tuple in output of module in Terraform?
[英]Terraform - Get a value from map output
我使用aws_iam_group
和for_each
循環創建了 AWS IAM 組
resource "aws_iam_group" "all" {
for_each = toset(local.groups)
name = each.key
path = "/"
}
然后我輸出所有組
output "groups" {
value = aws_iam_group.all
}
這是運行terraform output groups
后的結果
{
"developer" = {
"arn" = "arn:aws:iam::*********:group/developer"
"id" = "developer"
"name" = "developer"
"path" = "/"
"unique_id" = "**************"
}
"devops" = {
"arn" = "arn:aws:iam::*********:group/devops"
"id" = "devops"
"name" = "devops"
"path" = "/"
"unique_id" = "**************"
}
}
我的問題:
如何使用 terraform output 命令從 output 獲取單個組?
如果您只想為組名獲取一個值,我認為使用 output 無法按照您指定的方式實現。 但是,您可以做的是定義另一個 output 並執行以下操作:
output "developer_group" {
value = aws_iam_group.all["developer"].arn
}
另一方面,如果您不想要另一個 output,您可以做的是使用內置的values
function [1] 僅獲取使用for_each
循環創建的鍵值對的值。 為此,您需要將 output 更改為:
output "groups" {
value = values(aws_iam_group.all)[*].arn
}
這將 output 所有組的所有 ARN,這將是一個列表:
groups = [
"arn:aws:iam::*********:group/developer",
"arn:aws:iam::*********:group/devops",
]
最后一個選項可能是使用內置 function 的values
,但不要使用通配符 ( [*]
),您只需指定要為其 output 值的索引:
output "groups" {
value = values(aws_iam_group.all)[0].arn
}
請記住,如果 output 中的順序在上一個示例中發生更改,您可能會得到錯誤組的 ARN。 最后一個示例實際上與第一個示例相同。
@sam ben,這應該可以
aws_iam_group.all[“開發者”].arn
因為“all”是一個列表,所以我們使用列表中的特定項目(在這種情況下為開發人員),然后引用來自“開發人員”的特定項目(在給定情況下為 arn)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.