Perfis AWS em toolkits: descubra com list-profiles e valide com STS
Como construir seleção de perfis AWS usando aws configure list-profiles, validar identidade com sts get-caller-identity e tratar region/source_profile sem parsing frágil.
Toolkits de cloud costumam começar simples: ler ~/.aws/config, extrair alguns nomes e montar um menu.
Funciona até aparecerem perfis com source_profile, credenciais em mecanismos diferentes ou uma configuração que não combina com o parser improvisado.
No meu toolkit, a abordagem consolidada ficou mais simples: deixar a própria AWS CLI dizer quais perfis ela conhece.
| |
Depois, a identidade efetiva é validada com STS dentro da sessão correspondente.
| |
O artigo original desta pauta dizia que os perfis existiam, STS funcionava e “a ferramenta não os encontrava”. A fonte recuperada comprova a implementação robusta atual, mas não reconstrói com segurança aquele defeito anterior. Por isso reduzi o título ao comportamento que consigo provar.
Não parseie configuração se a CLI já tem uma API para isso #
Um seletor de perfil pode ser tão simples quanto:
| |
Isso evita tentar interpretar manualmente seções como:
| |
ou diferenças entre ~/.aws/config e ~/.aws/credentials.
A AWS CLI já resolve a visão de perfis que ela própria utiliza.
Primeiro valide se o perfil existe #
No toolkit, uma função auxiliar verifica a lista conhecida antes de aceitar um argumento fornecido pelo operador.
Conceitualmente:
| |
Se o argumento não for válido, o fluxo volta para seleção interativa.
Isso é melhor do que deixar o erro aparecer muito depois em um comando destrutivo ou demorado.
Perfil e identidade são coisas diferentes #
O nome do perfil não prova qual conta/role foi assumida.
A verificação real é:
| |
No meu fluxo com aws-vault, a validação é executada dentro da sessão temporária:
| |
Assim eu consigo conferir:
| |
antes de operar recursos.
Em ambiente com várias contas, essa checagem é barata comparada ao custo de executar o comando certo na conta errada.
Region também precisa ser resolvida de forma previsível #
O toolkit recupera a region configurada para o perfil e mantém um fallback operacional quando ela não existe.
Uma leitura simples:
| |
Se a ferramenta precisa fixar uma region:
| |
Mas isso já é uma alteração de configuração; não deve acontecer silenciosamente só porque o perfil foi selecionado.
Seleção, validação e mudança devem ser ações distintas.
source_profile merece atenção #
Um perfil pode depender de outro:
| |
O toolkit consulta:
| |
Em um fluxo específico de configuração de region, ele pode alinhar a region do perfil e do source_profile quando isso é deliberadamente desejado.
O ponto é saber que existe essa relação, em vez de tratar cada seção como credencial independente.
aws-vault resolve credencial temporária; não identidade conceitual #
Abrir console ou shell com:
| |
ou:
| |
é conveniente.
Mas continuo usando STS para confirmar a identidade efetiva.
O fluxo fica:
| |
Isso reduz a dependência de memória do operador sobre qual nome corresponde a qual conta.
Um menu não deve esconder a CLI real #
No toolkit, fzf é apenas uma camada de ergonomia.
A fonte de perfis continua sendo:
| |
A identidade continua sendo:
| |
E o mecanismo de sessão continua sendo aws-vault.
Se o menu quebrar, os comandos de base permanecem reproduzíveis no terminal.
Essa propriedade é importante em ferramenta de plantão.
Evite armazenar Account IDs no código para descobrir quem é quem #
É possível criar um mapa rígido:
| |
Mas isso envelhece e pode vazar informação desnecessária.
Para operação, prefiro descobrir a identidade em runtime com STS e, quando necessário, manter aliases humanos em configuração privada separada.
No artigo, nenhum Account ID real precisa ser publicado.
Um seletor robusto #
Exemplo reduzido:
| |
Validação:
| |
O que a fonte prova #
O script recuperado comprova um toolkit próprio com:
- descoberta por
aws configure list-profiles; - ordenação e escolha via
fzf; - verificação explícita de existência de perfil;
- suporte a argumento ou escolha interativa;
aws-vault logineaws-vault exec;- validação por
aws sts get-caller-identity; - leitura/configuração de region;
- tratamento de
source_profile; - limpeza de sessões
aws-vault.
Ele não é usado para afirmar qual era exatamente o bug histórico que motivou a pauta original.
Checklist #
| |
O principal aprendizado #
Um perfil chamado prod é só um nome.
A operação segura começa quando a ferramenta consegue responder duas perguntas sem adivinhação:
quais perfis a AWS CLI realmente conhece?
qual identidade esse perfil assumiu agora?
Me chama.
Manda o contexto, os sintomas e o que já foi testado. Bora organizar as evidências antes de sair mexendo.