如何使用 Terraform 获取 AWS 账户名称?

问题描述 投票:0回答:3

我正在尝试获取 AWS 帐户名称,以便稍后能够在我的 Terraform 代码中使用它。我只有帐户访问权限,因此无法使用需要组织权限的资源。

我认为这会起作用:

data "aws_iam_account_alias" "current" {}

output "account_id" {
  value = data.aws_iam_account_alias.current.account_alias
}

但它返回一个空列表,因为帐户没有别名(结果帐户名称帐户别名不同)。

有没有类似的方法可以使用 Terraform 获取帐户名称? (有完整账户权限但无组织权限)

amazon-web-services terraform amazon-iam
3个回答
4
投票

您可以使用:

data "aws_caller_identity" "current" {}

output "account_id" {
  value = data.aws_caller_identity.current.account_id
}

output "caller_arn" {
  value = data.aws_caller_identity.current.arn
}

output "caller_user" {
  value = data.aws_caller_identity.current.user_id
}

来源:https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity


0
投票

您可以使用 aws_caller_identity 数据源从当前账户获取 ID 或 ARN。它类似于

aws sts get-caller-identity
的输出。如果您确实需要账户的友好名称而不仅仅是 ID,您可以尝试通过aws_organizations_organization 数据源获取它,该数据源导出所有可用账户及其 ARN、ID、名称和其他一些信息属性。因为您提到您没有组织访问权限,所以这可能不是一个可行的解决方案。


0
投票

AWS 的命名很糟糕,AWS IAM 帐户似乎与 AWS 组织不同。

我相信您正在寻找的是一个AWS组织名称,因为我也在寻找一个名称,但只得到了空别名,尽管我可能是错的。

您可以在 Terraform 中此处获取它。

或者从 CLI 中使用:

aws aws organizations describe-account --account-id XXXXX

编辑:链接到回答我的问题的SO问题:IAM和AWS组织之间的差异

© www.soinside.com 2019 - 2024. All rights reserved.