¿Cómo utilizar varias cuentas de AWS desde la línea de comandos?

114

Tengo dos aplicaciones diferentes que estoy alojando (bueno, la segunda está a punto de subir) en Amazon EC2.

¿Cómo puedo trabajar con ambas cuentas en la línea de comandos (Mac OS X) pero mantener las claves y los certificados EC2 separados? ¿Necesito cambiar mis variables de entorno antes de cada comando ec2- *?

¿Usar un alias y tenerlo en la configuración del entorno en línea funcionaría? Algo como:

alias ec2-describe-instances1 = exportar EC2_PRIVATE_KEY = / ruta; ec2-describir-instancias

Matt Culbreth
fuente

Respuestas:

17

Debería poder usar las siguientes opciones de comando en lugar de las EC2_PRIVATE_KEY(e incluso EC2_CERT) variables de entorno:

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

Puede poner estos alias dentro, por ejemplo

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
vladr
fuente
309

Puede trabajar con dos cuentas creando dos perfiles en la línea de comandos de aws. Le pedirá su AWS Access Key ID, AWS Secret Access Key y la región deseada, así que téngalos listos.

Ejemplos:

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

Luego puede cambiar entre las cuentas pasando el perfil en el comando.

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

Nota:

Si asigna un nombre al perfil default, se convertirá en el perfil predeterminado, es decir, cuando no haya ningún --profileparámetro en el comando.


Más sobre el perfil predeterminado

Si pasa más tiempo usando account1 , puede establecerlo como predeterminado configurando la variable de entorno AWS_DEFAULT_PROFILE. Cuando se establece la variable de entorno predeterminada, no es necesario especificar el perfil en cada comando.

Ejemplo de Linux, OS X:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Ejemplo de Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
fuente
Para configurar la región, aquí está la lista de "códigos" de región - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon
65

Quizás todavía ayude a alguien. Puede configurarlo manualmente.

1) Establecer en archivo

~/.aws/credentials

esta

[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) Establecer en archivo

~/.aws/config

esta

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

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

3) Pruébelo con AWS Command Line y el comando y la salida serán JSON

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

Árbitro

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

BG BRUNO
fuente
2
@iBrianCox: esta información debe combinarse preferiblemente en la respuesta más votada ( stackoverflow.com/a/34246053/1199564 ) porque le permite al usuario comprender cómo mover la configuración de un perfil a otro si, por ejemplo, comenzó con solo el perfil predeterminado y desea continuar con perfiles separados y dedicados.
mgd
@slm, lea mi comentario anterior (solo pude hacer una mención por comentario)
mgd
@mgd gracias por la sugerencia, pero no, porque al principio esa respuesta no es mía, y en segundo lugar, este es un enfoque diferente de cómo configurarlo
BG BRUNO
@mgd Q, ¿puedes describir mejor lo que quieres decir con "una mención por comentario"?
BG BRUNO
Lo que quise decir fue que en mi primer comentario tenía la intención de mencionar tanto a iBrianCox como a slm (autor y editor de la otra respuesta respectivamente) pero solo se le permite hacer una mención por comentario, así que tuve que agregar otro comentario para mencionar ambos. . Tiene razón en que su respuesta es un enfoque diferente, pero es muy útil saber dónde se almacena la información, en particular si tiene la intención de copiar configuraciones entre perfiles.
mgd
0

Puede escribir un script de shell para establecer los valores correspondientes de las variables de entorno para cada cuenta según la entrada del usuario. Al hacerlo, no es necesario que cree ningún alias y, además, herramientas como las herramientas ELB, Auto Scaling Command Line Tools también funcionarán en varias cuentas.

Roman Newaza
fuente
0

Creé una herramienta simple, aaws , para cambiar entre cuentas de AWS.

Funciona configurando el AWS_DEFAULT_PROFILEen su shell. Solo asegúrese de tener algunas entradas en su ~/.aws/credentialsarchivo y cambiará fácilmente entre varias cuentas.

/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
fuente