Nesse artigo, vamos configurar múltiplos de perfis de CLI em um terminal Linux usando o Ubuntu 22.04 instalado usando o WSL2 no Windows 11.
Veremos vários comandos para configurar, listar e trocar perfis programáticos do aws-cli e ao final como você pode usar a ferramenta awsp para facilitar ainda mais essa troca de perfis através do seu terminal Linux.
Este artigo já considera um usuário que tenha o AWS CLI instalado. Para entender como instalar o AWS CLI corretamente em seu terminal, veja esse artigo.
Sumário:
- O que você precisa saber?
- Configurando múltiplos perfis de acesso em seu terminal;
- Configurando um perfil através dos arquivos no diretório oculto .aws/;
- Bônus: Como agilizar a troca de perfis;
O que você precisa saber?
No momento em que você instala e configura o AWS CLI pela primeira vez, um diretório oculto .aws/ é criado no diretório home do usuário em uso. Para verificar esse diretório oculto do aws-cli, execute o comando abaixo:
ls -la ~/
Nesse diretório é onde estarão armazenadas as informações das credenciais que serão utilizadas em cada perfil de cli que é configurado no seu terminal. Ao entrar nesse diretório e listar o conteúdo lá existente, você verá que lá existem dois arquivos: O arquivo config e o arquivo credentials:
No arquivo config ficam armazenadas as informações do nome do perfil, a região padrão daquele perfil e o formato padrão de saída daquele perfil. No arquivo credentials ficam armazenadas a aws_access_key_id e a aws_secret_access_key.
Ps.: Caso você não esteja visualizando ainda essas informações, o diretório e os dois arquivos serão criados assim que você configurar um perfil pela primeira vez.
Esses arquivos podem ser editados e a configuração de perfis pode acontecer diretamente por eles. Veremos abaixo a primeira forma de configurar os perfis de acesso que é através de comandos de CLI.
Configurando múltiplos perfis no seu terminal
Usando o comando aws configure --profile nome_do_perfil
você começará o processo de configuração de um perfil. Após executar esse comando você deve entrar com as seguintes informações:
- AWS Access Key ID
- AWS Secret Access Key ID
- Region (Região padrão para aquele perfil)
- Default Output Format (Formato padrão de saída do retorno dos comandos. Podem ser 5 valores: json, yaml, yaml-stream, text e table)
Após entrar com essas informações o seu primeiro perfil estará configurado:
Se você verificar o conteúdo dos arquivos config e credentials no diretório .aws/, você observará que as informações do perfil que você acabou de configurar estão nesses arquivos:
Depois de configurar o perfil, você tenta já executar algum comando de cli para interagir com os seus recursos na AWS. Porém, você ainda se depara com a seguinte mensagem:
Isso acontece porque, apesar de já configurado o seu primeiro perfil, você ainda não carregou em seu terminal o perfil que deve ser usado para os seus comandos de cli. Isso é feito através da variável de ambiente AWS_PROFILE. Você precisa popular o valor dessa variável com o valor do nome do perfil que deseja atualizar. No linux, para atribuir um valor a uma variável de ambiente você usa o comando export, da forma mostrada abaixo:
export AWS_PROFILE=nome_do_perfil
echo $AWS_PROFILE
Depois de inserido o nome do seu perfil nessa variável de ambiente, você terá sucesso na execução dos comandos de cli:
Ps.: Uma outra opção seria você informar o perfil que deseja usar a cada comando de cli que você executar através do parâmetro --profile nome_do_perfil, porém fazer isso via variável de ambiente é um caminho mais fácil.
Configurando um perfil através dos arquivos no diretório oculto .aws/
Você pode configurar um perfil entrando com as informações desse perfil diretamente nos arquivos .aws/config e .aws/credentials. Basta abrir esses arquivo em um editor de texto (nano ou vim, por exemplo) e configurar corretamente cada um dos campos de acordo com o padrão de configuração. Vamos fazer isso para o perfil-02. Os arquivo finais ficam da seguinte forma:
Depois de configurado o segundo perfil via edição dos arquivos, você pode selecionar o seu perfil configurado normalmente através da variável de ambiente AWS_PROFILE.
export AWS_PROFILE=perfil-02
Se desejar conferir se o valor foi atribuído corretamente, liste o valor da variável de ambiente usando o comando echo
:
echo $AWS_PROFILE
Depois de definido o seu perfil, você poderá executar os seus comandos de CLI normalmente
Como agilizar a troca de perfis
Você percebeu que para todo perfil configurado em seu terminal e que você deseja utilizar para executar um ou uma sequência de comandos você tem duas opções:
- Em cada comando a ser executado você informa qual perfil deseja utilizar através do parâmetro --profile, o que não é nada prático;
- Define o valor da variável de ambiente com o nome do perfil que deseja utilizar e depois troca o valor dessa variável de ambiente caso precise trabalhar com outro perfil;
O que acontece é que existem alguns plugins que facilitam a nossa vida em se tratando de troca de perfis de CLI. O que vale ressaltar é que essas ferramentas não são oficiais da AWS e sim criadas e mantidas pela comunidade de usuários. A ferramenta que vamos utilizar para facilitar a troca de perfis em nosso terminal é a awsp e o repo oficial pode ser encontrado aqui.
Com o npm já instalado em seu terminal, basta executar o comando abaixo para instalar essa ferramenta:
npm install -g awsp
No seu arquivo .bashrc ou .zshrc (a depender do bash que você utiliza), adicione a seguinte linha ao final do arquivo:
alias awsp="source _awsp"
Um exemplo desse campo adicionado está abaixo:
Após essas configurações, o awsp já deve estar preparado para ser utilizado e pode ser invocado através do comando awsp
. Você verá uma lista dos seus perfis de CLI e poderá selecionar, usando simplesmente as setas do seu teclado, o perfil que você deseja utilizar e digitando Enter:
Dessa forma, a troca de perfis de torna extremamente facilitada, não sendo necessária mais a manipulação da variável de ambiente AWS_PROFILE toda vez que quiser utilizar um perfil diferente. O awsp faz isso pra você "por baixo dos panos" ;)
Formatos padrão de saída do AWS CLI
No AWS CLI V2 nós temos 5 formatos padrão de saída e cada um deles entrega vantagens para definir o formato de saída das informações do terminal após a execução de comandos de CLI. Os formatos são:
- json
- yaml
- yaml-stream
- text
- table
Vamos observar a saída proveniente de um mesmo comando para dois tipos de saídas diferentes vinculadas a perfis diferentes. O perfil-01 tem o formato padrão de saída definido como json e o perfil-02 tem o formato padrão de saída definido como table. Após executar o seguinte comando aws ec2 describe-instances
, vemos as seguintes saídas:
Saída para o perfil-01 com o valor json definido como padrão de saída:
Saída para o perfil-02 com o valor table definido como padrão de saída:
Você deve utilizar o formato padrão de saída que fique mais conveniente para a situação em que você estiver inserido. Se for utilizar a saída de um comando como input para uma API ou se deseja armazenar essa informação para uso posterior, pode fazer sentido que essa saída seja em JSON. Se deseja apenas visualizar as informações de saída de um comando, o formato TABLE pode fazer mais sentido para você. Conheça cada um dos formatos de saída para saber o melhor momento de usar cada um deles.
Top comments (0)