AWS CLI: 15 comandos de configuração para gerenciar múltiplas contas

Image for post
Image for post

Para usar a CLI da AWS, primeiro verifique se as credenciais e chave de acesso da AWS estão configuradas corretamente.

Depois de ter seu AWS access_key_id e secret_access_key, você pode adicioná-los manualmente ao arquivo de credenciais ou usar o comando aws configure para configurá-lo em sua máquina local.

Este tutorial explica todas as opções disponíveis no comando aws configure, além de como gerenciar vários perfis:

Tabela de Conteúdo

1. Primeira configuração de credenciais da AWS — perfil padrão

Ao executar o comando aws configure sem nenhum argumento, você configurará as credenciais do aws como seu perfil padrão.

$ aws configure
AWS Access Key ID [None]: AAABBBCCCDDDEEEFFFGG
AWS Secret Access Key [None]: aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn
Default region name [None]: us-east-1
Default output format [None]: text

No exemplo acima:

2. Diretório ~/.aws - Arquivo de configuração e credenciais para o perfil padrão

Quando você executa o aws configure pela primeira vez, ele criará o diretório ~/.aws, se ele não existir, no diretório inicial com os dois arquivos a seguir:

$ ls -1 ~/.aws
config
credentials
$ cat ~/.aws/config
[default]
region = us-east-1
output = text
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AAABBBCCCDDDEEEFFFGG
aws_secret_access_key = aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn

No exemplo acima:

3. Editar credenciais do perfil padrão — Conecte-se a diferentes contas da AWS

Se você deseja se conectar a uma conta AWS diferente na sua CLI, você pode alterar as credenciais de perfil padrão existentes executando o comando “aws configure” novamente.

$ aws configure
AWS Access Key ID [****************FFGG]: ZZZZZZCCCDDDEEEFFFZZ
AWS Secret Access Key [****************mmmn]: zzzzzzcccdddeeefffggghhhiiijjjkkklllmmzz
Default region name [us-east-1]: us-west-2
Default output format [text]: json
$ cat ~/.aws/config
[default]
region = us-west-2
output = json

Nota:

4. Crie vários perfis da AWS — Dev and Prod

Ao conectar-se a várias contas da AWS usando apenas o perfil padrão, você vai continuar alterando os valores de access_key_id e secret_access_key, o que não é prático.

Nesse caso, você pode criar vários perfis.

Digamos que você precise usar os comandos na AWS CLI para acessar sua conta AWS-dev e conta AWS-prod. Nesse caso, crie um perfil de desenvolvimento e um perfil de produção, conforme explicado abaixo.

Primeiro, crie um perfil de desenvolvedor, use os valores access_key_id e secret_access_key da sua conta AWS-dev:

$ aws configure --profile dev
AWS Access Key ID [None]: DEVBBBCCCDDDEEEFFDEV
AWS Secret Access Key [None]: devbbbcccdddeeefffggghhhiiijjjkkklllmdev
Default region name [None]: us-east-1
Default output format [None]:

Em seguida, crie um perfil de produção, use os valores access_key_id e secret_access_key da sua conta AWS-prod:

$ aws configure --profile prod
AWS Access Key ID [None]: PRODBBCCCDDDEEEFPROD
AWS Secret Access Key [None]: prodbbcccdddeeefffggghhhiiijjjkkklllprod
Default region name [None]: us-west-2
Default output format [None]:

5. Diretório ~/.aws - Arquivo de configuração e credenciais para vários perfis (Dev e Prod)

Após adicionar novos perfis adicionais (dev e prod), agora temos um total de 3 perfis, incluindo o perfil padrão, conforme mostrado abaixo nos arquivos de configuração.

$ cat ~/.aws/config
[default]
region = us-east-1
output = text
[profile dev]
region = us-east-1
[profile prod]
region = us-west-2
$ cat ~/.aws/credentials
[default]
aws_access_key_id = AAABBBCCCDDDEEEFFFGG
aws_secret_access_key = aaabbbcccdddeeefffggghhhiiijjjkkklllmmmn
[dev]
aws_access_key_id = DEVBBBCCCDDDEEEFFDEV
aws_secret_access_key = devbbbcccdddeeefffggghhhiiijjjkkklllmdev
[prod]
aws_access_key_id = PRODBBCCCDDDEEEFPROD
aws_secret_access_key = prodbbcccdddeeefffggghhhiiijjjkkklllprod

No exemplo acima:

6. Alternando entre diferentes perfis da AWS usando a opção --profile

Por padrão, a AWS CLI usará credenciais do perfil padrão. Por exemplo, o comando a seguir listará todos os volumes EBS usando suas credenciais do perfil padrão.

$ aws ec2 describe-volumes

Se você deseja se conectar a uma conta diferente da AWS. Por exemplo, sua conta AWS-dev, use o perfil de desenvolvedor, como mostrado abaixo:

$ aws ec2 describe-volumes --profile dev

O seguinte será conectado ao perfil do prod:

$ aws ec2 describe-volumes --profile prod

Observe que os seguintes comandos são exatamente os mesmos. Ambos usarão o perfil padrão:

$ aws ec2 describe-volumes$ aws ec2 describe-volumes --profile default

Nota:

Em uma observação relacionada, para iniciar uma instância do EC2 a partir da CLI, consulte: Como iniciar uma instância do Amazon AWS EC2 com UserData a partir da CLI

7. Alternando entre diferentes perfis da AWS usando a variável env AWS_PROFILE

Especificar a opção de perfil em todo comando na sua CLI pode ser um pouco complicado. Para evitar isso, você pode definir seu perfil usando a variável de ambiente AWS_PROFILE.

Primeiro, defina seu AWS_PROFILE para conectar-se à conta AWS-dev.

export AWS_PROFILE=dev

A partir de agora, todos os comandos da AWS CLI que você executar se conectarão à conta AWS-dev. Você não precisa mais especificar a opção — profile

Os comandos a seguir usarão credenciais de perfil de desenvolvedor (não as credenciais padrão), pois definimos AWS_PROFILE como dev.

$ aws ec2 describe-volumes
$ aws ec2 describe-instances
$ aws s3 ls
$ ...

Se você deseja se conectar à conta AWS-prod, basta definir o AWS_PROFILE como prod, como mostrado abaixo.

$ export AWS_PROFILE=prod

Após definer o perfil, os comandos a seguir usarão as credenciais do perfil do prod para se conectar à sua conta do AWS-prod.

$ aws ec2 describe-volumes
$ aws ec2 describe-instances
$ aws s3 ls
$ ...

Depois de definir como dev ou prod e se você deseja se conectar à conta da AWS que aponta para o perfil padrão, você tem duas opções.

Você pode definir AWS_PROFILE como padrão, como mostrado abaixo.

export AWS_PROFILE=default

Ou, você pode simplesmente desabilitar a variável de ambiente AWS_PROFILE, que começará automaticamente a usar o perfil padrão.

unset AWS_PROFILE

Após remover a variável, os comandos a seguir usarão credenciais do perfil padrão para conectar-se à sua conta da AWS.

$ aws ec2 describe-volumes
$ aws ec2 describe-instances
$ aws s3 ls
$ ...

8. Exibir informações do perfil usando a opção list

A maneira mais fácil de visualizar todos os perfis que você configurou em seu sistema é exibir o conteúdo dos arquivos de configuração e credenciais.

$ cat ~/.aws/config$ cat ~/.aws/credentials

A opção list no comando aws configure exibirá as informações sobre o perfil atual, como mostrado abaixo.

$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile None None
access_key ****************FFGG shared-credentials-file
secret_key ****************mmmn shared-credentials-file
region us-east-1 config-file ~/.aws/config

No perfil acima, a primeira linha exibe qual perfil você está usando. Na coluna “Value” da 1ª linha (ou seja, para o perfil), diz “”, isso indica que atualmente você está conectado ao perfil “default”.

Se você alterar o perfil para “prod”, verá a coluna “Value” da 1ª linha dizendo “prod”, como mostrado abaixo.

$ export AWS_PROFILE=prod$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile prod manual --profile

Você também pode passar o nome do perfil para visualizar as informações do perfil sem alterar seu perfil atual, como mostrado abaixo

$ aws configure list --profile dev

9. Alterar a configuração padrão do arquivo de credenciais FileName e Location

Ao invés do padrão ~/.aws/config e ~/.aws/credenciais, você também pode usar um local e um nome de arquivo diferente usando as seguintes variáveis ​​de ambiente:

Por exemplo:

$ export AWS_SHARED_CREDENTIALS_FILE=/var/tmp/mycredentials$ export AWS_CONFIG_FILE=/var/tmp/myconfig

Depois de definir os valores acima, todos os comandos da AWS CLI começarão a usar perfis e credenciais correspondentes dos arquivos no local acima:

$ aws ec2 describe-volumes
$ aws ec2 describe-instances
$ aws s3 ls
$ ...

Na saída a seguir, a coluna “Location” da última linha (region) indica qual arquivo de configuração está sendo usado.

$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile None None
access_key ****************FFGG shared-credentials-file
secret_key ****************mmmn shared-credentials-file
region us-east-1 config-file /var/tmp/myconfig

10. Exibir um valor de parâmetro de perfil específico usando a opção get

Se você deseja exibir apenas um valor do seu arquivo de configuração ou credenciais, use a opção get nos comandos aws configure usando a seguinte sintaxe.

O comando get é útil se você estiver escrevendo algo e quiser obter informações de perfil dentro do seu shell script.

$ aws configure get varname [--profile profile-name]

Na saída a seguir, apenas será exibido o access_key_id do perfil atual.

$ aws configure get aws_access_key_id
AAABBBCCCDDDEEEFFFGG

Você também pode usar qualquer um dos seguintes:

$ aws configure get aws_access_key_id
$ aws configure get aws_secret_access_key
$ aws configure get region
$ aws configure get output

Você também pode especificar o nome do perfil, como mostrado abaixo:

$ aws configure get dev.aws_secret_access_key
$ aws configure get prod.aws_secret_access_key

11. Defina um valor de parâmetro de perfil específico usando a opção set

Os comandos get e set do aws configure podem ser úteis, se você estiver escrevendo um script shell para manipular os valores dos seus arquivos de configuração / credenciais.

Sintaxe:

$ aws configure set varname value [--profile profile-name]

Você pode apenas definir o valor de um parâmetro específico, como mostrado abaixo.

$ aws configure set region us-east-2

Você pode definir os valores de qualquer um dos seguintes parâmetros:

$ aws configure set aws_access_key_id NEWABBCCCDDDEEEFPNEW
$ aws configure set aws_secret_access_key newdbbcccdddeeefffggghhhiiijjjkkklllpnew
$ aws configure set region us-east-2
$ aws configure set output json

Você também pode especificar o nome do perfil, como mostrado abaixo:

$ aws configure set dev.region us-east-2
$ aws configure set prod.output json

12. Adicionar novo modelo usando a opção add-model

Você pode adicionar modelos com base nas informações de um arquivo json.

Por exemplo, se você tiver uma versão da AWS CLI que não possui o Amazon Polly, poderá reinstalar a AWS CLI para obter o Polly.

Ou você pode fazer o download do arquivo de modelo do Polly e usar a opção add-model em aws configure, como mostrado abaixo.

$ aws configure add-model --service-model file:///var/tmp/polly.json

O comando acima criará o diretório ~/.aws/models e criará o seguinte subdiretório com base nas informações do arquivo json fornecido.

$ ls -l ~/.aws/models/polly/2016-06-10/service-2.json

A seguir, são apresentadas as primeiras linhas do arquivo json que foram usadas no exemplo acima.

$ head -10 ~/.aws/models/polly/2016-06-10/service-2.json
{
"version":"2.0",
"metadata":{
"apiVersion":"2016-06-10",
"endpointPrefix":"polly",
"protocol":"rest-json",
"serviceFullName":"Amazon Polly",
"serviceId":"Polly",
"signatureVersion":"v4",
"uid":"polly-2016-06-10"

O arquivo acima é o mesmo que usamos durante nosso comando add-model.

$ diff -w ~/.aws/models/polly/2016-06-10/service-2.json /var/tmp/polly.json

Você também pode especificar um nome de serviço diferente passando o parâmetro — service-name, como mostrado abaixo.

$ aws configure add-model --service-model file:///var/tmp/custom.json --service-name mycustom

O comando acima criará um subdiretório em ~/.aws/models com o nome do serviço que você especificou como mostrado abaixo.

$ ls -l ~/.aws/models/mycustom/2016-06-10/service-2.json

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store