Como usar várias contas da AWS na linha de comando?

115

Tenho dois aplicativos diferentes que estou hospedando (bem, o segundo está prestes a ser lançado) no Amazon EC2.

Como posso trabalhar com as duas contas na linha de comando (Mac OS X), mas manter as chaves e certificados EC2 separados? Preciso alterar minhas variáveis ​​de ambiente antes de cada comando ec2- *?

Usar um alias e tê-lo para a configuração do ambiente in-line funcionaria? Algo como:

alias ec2-describe-instances1 = export EC2_PRIVATE_KEY = / path; ec2-describe-instances

Matt Culbreth
fonte

Respostas:

17

Você deve ser capaz de usar as seguintes opções de comando no lugar das EC2_PRIVATE_KEY(e até EC2_CERT) variáveis ​​de ambiente:

  • -K <private key>
  • -C <certificate>

Você pode colocar esses apelidos internos, por exemplo

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
vladr
fonte
310

Você pode trabalhar com duas contas criando dois perfis na linha de comando do aws. Ele solicitará que você forneça sua AWS Access Key ID, AWS Secret Access Key e a região desejada, portanto, tenha-os prontos.

Exemplos:

$ aws configure --profile account1
$ aws configure --profile account2

Você pode então alternar entre as contas, passando o perfil no comando.

$ aws dynamodb list-tables --profile account1
$ aws s3 ls --profile account2

Nota:

Se você nomear o perfil, defaultele se tornará o perfil padrão, ou seja, quando nenhum --profileparâmetro no comando.


Mais sobre o perfil padrão

Se você passar mais tempo usando account1 , pode torná-lo o padrão definindo a variável de ambiente AWS_DEFAULT_PROFILE. Quando a variável de ambiente padrão é definida, você não precisa especificar o perfil em cada comando.

Linux, OS X Exemplo:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Exemplo do Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
fonte
Para configurar a região - aqui está uma lista de "códigos" de região - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon
66

Talvez ainda ajude alguém. Você pode configurá-lo manualmente.

1) Definir no arquivo

~/.aws/credentials

isto

[default]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}

[{{profile_name}}]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}

2) Definir no arquivo

~/.aws/config

isto

[default]
region={{region}}
output={{output:"json||text"}}

[profile {{profile_name}}]
region={{region}}
output={{output:"json||text"}}

3) Teste-o com a linha de comando da AWS e o comando e a saída será JSON

aws ec2 describe-instances --profile {{profile_name}}

Ref

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles

BG BRUNO
fonte
2
@iBrianCox - Essas informações devem ser preferencialmente mescladas na resposta mais votada ( stackoverflow.com/a/34246053/1199564 ) porque permite que um usuário entenda como mover as configurações de um perfil para outro se, por exemplo, você começou com apenas o perfil padrão e deseja continuar com perfis separados e dedicados.
mgd
@slm, por favor, leia meu comentário acima (só foi capaz de fazer uma menção por comentário)
mgd
@mgd obrigado pela sugestão, mas não - porque a princípio essa resposta não é minha - e segundo esta é uma abordagem diferente de como configurá-la
BG BRUNO
@mgd Q você pode descrever melhor o que quer dizer "uma menção por comentário"?
BG BRUNO
O que eu quis dizer foi que no meu primeiro comentário que eu pretendia mencionar tanto iBrianCox e SLM (autor e editor da outra resposta, respectivamente), mas você só estão autorizados a fazer uma menção por comentário então eu tive que adicionar outro comentário, a fim de mencionar tanto . Você está correto ao dizer que sua resposta é uma abordagem diferente, mas é muito útil saber onde as informações estão armazenadas, especialmente se você pretende copiar as configurações entre perfis.
mgd
0

Você pode escrever um script de shell para definir os valores correspondentes das variáveis ​​de ambiente para cada conta com base na entrada do usuário. Fazendo isso, você não precisa criar nenhum apelido e, além disso, ferramentas como ferramentas ELB, ferramentas de linha de comando do Auto Scaling funcionarão em várias contas também.

Roman Newaza
fonte
0

Eu criei uma ferramenta simples, aaws , para alternar entre contas AWS.

Ele funciona definindo o AWS_DEFAULT_PROFILEem seu shell. Apenas certifique-se de que você tenha algumas entradas em seu ~/.aws/credentialsarquivo e ele alternará facilmente entre várias contas.

/tmp
$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
/tmp
$ aaws luk3

[luk3] 🔐 /tmp
$ aws s3 ls
2013-11-05 21:40:04 luk3thomas.com
luk3thomas
fonte