DEV Community

Cover image for AWS CLI: 15 comandos de configuração para gerenciar múltiplas contas
Eduardo Rabelo
Eduardo Rabelo

Posted on

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

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
  2. Diretório ~/.aws - Arquivo de configuração e credenciais para o perfil padrão
  3. Editar credenciais do perfil padrão - Conecte-se a diferentes contas da AWS
  4. Crie vários perfis da AWS - Dev and Prod
  5. Diretório ~/.aws - Arquivo de configuração e credenciais para vários perfis (Dev e Prod)
  6. Alternando entre diferentes perfis da AWS usando a opção --profile
  7. Alternando entre diferentes perfis da AWS usando a variável env AWS_PROFILE
  8. Exibir informações do perfil usando a opção list
  9. Alterar a configuração padrão do arquivo de credenciais FileName e Location
  10. Exibir um valor de parâmetro de perfil específico usando a opção get
  11. Defina um valor de parâmetro de perfil específico usando a opção set
  12. Adicionando novos modelos usando a opção add-model

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:

  • [None]: Indica que você não possui nenhuma configuração de identificação de chave de acesso / chave de acesso secreta existente no sistema para o perfil padrão e solicitará novos valores.
  • ‌Region Name: Isso é opcional. Se você deixar isso em branco, você deverá especificar a região em todos os seus comandos da AWS CLI usando o parâmetro --region, caso contrário, receberá uma mensagem de erro.
  • ‌Output: Isso é opcional. Se você deixar em branco, a saída de toda a AWS CLI estará no formato json. As opções de saída disponíveis são: json, text, table

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:

  • ~/.aws/credentials - Isso conterá seu access_key_id e secret_access_key
  • ~/.aws/config - Isso conterá informações de configuração não relacionadas à credenciais, tais como region e output
  • [default] - Esta seção indica que esses valores pertencem ao perfil padrão. Lembre-se de que você pode ter mais de um perfil configurado, o que permitirá a execução de comandos AWS CLI em diferentes contas da AWS, conforme mostrado nos exemplos abaixo.

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:

  • Ao solicitar access_key_id e secret_access_key, será mostrado os 4 últimos caracteres dos valores existentes dentro do []
  • Se você pressionar enter sem fornecer nenhum novo valor, ele apenas manterá os valores existentes e não mudará nada.

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:

  • [default] - contém as informações das credenciais quando usamos o comando 'aws configure' pela primeira vez/sem nenhum parâmetro. Este é o nosso perfil padrão. Não temos um nome para este perfil.
  • [dev] - Esta seção contém credenciais do perfil do desenvolvedor.
  • [prod] - Esta seção contém credenciais do perfil do prod.

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:

  • A opção --profile pode ser usada com todos os comandos da AWS CLI.

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:

  • AWS_SHARED_CREDENTIALS_FILE - Defina esse valor como o nome do arquivo que contém suas credenciais da AWS.
  • AWS_CONFIG_FILE - Defina esse valor como o nome do arquivo que contém as informações de configuração do seu perfil da AWS.

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

Créditos

Top comments (0)