Terraform从aws\u organizations\u organization.main.accounts提取帐户id
给定帐户名,是否可以从中提取帐户idTerraform从aws\u organizations\u organization.main.accounts提取帐户id,terraform,Terraform,给定帐户名,是否可以从中提取帐户id resource "aws_organizations_organization" "main" { } 比如: output "account_id" { value = "aws_organizations_organization.main.accounts[name == 'account1']" } account\u id=012345678901 accounts = [ { "arn" = "arn:aws:organiz
resource "aws_organizations_organization" "main" {
}
比如:
output "account_id" {
value = "aws_organizations_organization.main.accounts[name == 'account1']"
}
account\u id=012345678901
accounts = [
{
"arn" = "arn:aws:organizations::012345678901:account/o-abc123/012345678901"
"email" = "account1@email.com"
"id" = "012345678901"
"name" = "account1"
},
{
"arn" = "arn:aws:organizations::012345678902:account/o-abc123/012345678902"
"email" = "account2@email.com"
"id" = "012345678902"
"name" = "account2"
},
{
"arn" = "arn:aws:organizations::012345678903:account/o-abc123/012345678903"
"email" = "account3@email.com"
"id" = "320413348752"
"name" = "account3"
}
]
理论上,如果您获得的是版本或更新版本,您应该能够使用新的
aws\u organizations\u organization
数据源,并根据帐户名对其进行过滤。例如,尽管未经测试:
data "aws_organizations_organization" "org" {
filter = {
name = "name"
values = ["account1"]
}
}
然后在需要帐户id的地方使用
data.aws\u organizations\u organization.org.id
您可以使用null\u data\u source
创建电子邮件列表。然后使用matchkeys
提取帐户
data "aws_organizations_organization" "main" {}
data "null_data_source" "main" {
count = length(data.aws_organizations_organization.main.accounts)
inputs = {
emails = data.aws_organizations_organization.main.accounts[count.index]["email"]
}
}
output "accounts" {
value = matchkeys(data.aws_organizations_organization.main.accounts, data.null_data_source.main.*.outputs.emails, list("account1"))
}
错误:main.tf第2行数据“aws\u organizations\u organization”“org”中不支持的块类型:2:filter{类型为“filter”的块这里不需要。
@Christian我在这里编辑了答案,以包含Terraform 0.12所需的缺少的=
符号。这对您来说是否有效?我正在尝试实现同样的目标,并且遇到了这个问题。我与@Christian有相同的问题。我在文档中查找了它,而筛选器属性在中不存在AWS提供商的最新版本(v3.37.0)。这篇文章展示了如何查看地图列表。我认为这可能会有所帮助。