【问题标题】:How to get the AWS Account Name using Terraform?如何使用 Terraform 获取 AWS 账户名?
【发布时间】:2022-11-16 14:46:49
【问题描述】:

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

我认为这会起作用:

data "aws_iam_account_alias" "current" {}

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

但它返回一个空列表,因为该帐户没有别名(原来帐户名称不同于帐户别名).

有没有类似的方法来获取帐户名称使用地形? (有完整的账户权限但没有组织权限)

【问题讨论】:

  • 你已经设置了account alias了吗?
  • 不,因为我正在尝试获取的是 account_name 而不是 account_alias。如果我使用 CLI:``` aws iam list-account-aliases ``` 我得到一个空列表。 ``` { "AccountAliases": [] } ```
  • 什么是账户名称?帐号?

标签: amazon-web-services terraform amazon-iam


【解决方案1】:

您可以使用 aws_caller_identity 数据源从当前帐户中获取 ID 或 ARN。它类似于aws sts get-caller-identity 的输出。如果你真的需要友好名称帐户的信息而不仅仅是 ID,您可以尝试通过 aws_organizations_organization data source 获取它,它会导出所有可用帐户及其 ARN、ID、名称和一些其他属性。因为您提到您没有组织访问权限,所以这可能不是一个可行的解决方案。

【讨论】:

    【解决方案2】:

    AWS 在命名方面很糟糕,而且 AWS IAM 帐户似乎与 AWS 组织不同。

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

    你可以在 Terraform 中获取它here

    或者从 CLI 使用:

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

    编辑:链接到回答我问题的 SO 问题:The differences between IAM and AWS Organization

    【讨论】:

      【解决方案3】:

      您可以使用:

      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

      【讨论】:

        猜你喜欢
        • 2020-12-08
        • 2022-10-16
        • 1970-01-01
        • 1970-01-01
        • 2020-02-27
        • 2014-02-03
        • 2021-06-26
        • 2019-02-27
        • 2023-03-25
        相关资源
        最近更新 更多