我正在尝试获取 AWS 帐户名称,以便稍后能够在我的 Terraform 代码中使用它。我只有帐户访问权限,因此无法使用需要组织权限的资源。
我认为这会起作用:
data "aws_iam_account_alias" "current" {}
output "account_id" {
value = data.aws_iam_account_alias.current.account_alias
}
但它返回一个空列表,因为帐户没有别名(结果帐户名称与帐户别名不同)。
有没有类似的方法可以使用 Terraform 获取帐户名称? (有完整账户权限但无组织权限)
您可以使用:
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
您可以使用 aws_caller_identity 数据源从当前账户获取 ID 或 ARN。它类似于
aws sts get-caller-identity
的输出。如果您确实需要账户的友好名称而不仅仅是 ID,您可以尝试通过aws_organizations_organization 数据源获取它,该数据源导出所有可用账户及其 ARN、ID、名称和其他一些信息属性。因为您提到您没有组织访问权限,所以这可能不是一个可行的解决方案。
AWS 的命名很糟糕,AWS IAM 帐户似乎与 AWS 组织不同。
我相信您正在寻找的是一个AWS组织名称,因为我也在寻找一个名称,但只得到了空别名,尽管我可能是错的。
您可以在 Terraform 中此处获取它。
或者从 CLI 中使用:
aws aws organizations describe-account --account-id XXXXX
编辑:链接到回答我的问题的SO问题:IAM和AWS组织之间的差异