As vezes, pra fazer algum tipo de automação, é interessante utilizar o alias da conta AWS como parte do nome de algum recurso, como tag etc. Curiosamente, ao procurar por alias
na página da documentação do provider, o que você encontra, dentre outros, é esse recurso:
data "aws_iam_account_alias" "current" {}
output "account_id" {
value = data.aws_iam_account_alias.current.account_alias
}
Por conta de seu nome, pode parecer que ele é exatamente o que você precisa, mas na verdade, ele é utilizado para personalizar a URL de login da sua conta.
Ao invés disso, o que muito provavelmente você está procurando é o alias da conta dentro de sua organização; para obter esse valor, você pode utilizar esse código aqui:
data "aws_caller_identity" "current" {}
data "aws_organizations_organization" "org" {}
locals {
aws_account_name = compact([for account in data.aws_organizations_organization.org.accounts : account.id == data.aws_caller_identity.current.id ? account.name : ""])[0]
}
output "account_alias" {
value = local.aws_account_name
}
compact
;for
.Inclusive poderia ser uma possível inclusão em um módulo info
, caso você possua ou queira prover algo do tipo:
module "info" {
source "..."
}
output "account_alias" {
value = module.info.account_alias
}
MAS
Esse código só vai funcionar se a identidade executando o código atualmente for a conta de gerenciamento da organização ou um delegated administrator:
Se não for esse seu caso, infelizmente ainda não há um datasource que retorne o alias apenas de sua conta; algo como descrito nessa issue (aberta):
Por enquanto, se você estiver nesse cenário e realmente precisar usar esse alias, você teria duas opções:
Criar uma role na conta que é delegated administrator, que pode ser assumida pela conta que você está usando, e que tenha permissões necessárias pra isso;
Ou utilizar esse comando do AWS CLI:
aws organizations describe-account --account-id <ACCOUNT-ID>
E obter o alias a partir do retorno.