virginia east cli aws amazon-ec2 amazon-web-services

amazon-ec2 - east - aws s3 sync



¿Cómo usar múltiples cuentas de AWS desde la línea de comando? (6)

Tengo dos aplicaciones diferentes que estoy hospedando (bueno, el segundo 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 separadas las claves y certificados EC2? ¿Debo cambiar las variables de entorno antes de cada comando ec2- *?

¿Usaría un alias y lo tendría para el entorno del trabajo en línea? Algo como:

alias ec2-describe-instances1 = exporta EC2_PRIVATE_KEY = / ruta; ec2-describe-instances


Las nuevas herramientas aws ahora admiten múltiples perfiles.

Si configura el acceso con las herramientas, crea automáticamente un valor predeterminado en ~ / .aws / config.

A continuación, puede agregar perfiles adicionales: más detalles en:

profiles


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 necesita crear ningún alias y, además, herramientas como herramientas ELB, herramientas de línea de comando de escalamiento automático también funcionarán en varias cuentas.


Puede trabajar con dos cuentas creando dos profiles en la línea de comandos de aws. Le solicitará su ID de clave de acceso de AWS, la clave de acceso secreta de AWS y la región deseada, así que prepárelas.

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 nombra el perfil default , se convertirá en el perfil predeterminado, es decir, cuando no --profile param en el comando.

Más sobre el perfil predeterminado

Si pasa más tiempo utilizando account1 , puede establecerlo como predeterminado configurando la variable de entorno AWS_DEFAULT_PROFILE. Cuando se establece la variable de entorno predeterminada, no necesita 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


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

1) Establecer en el 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 el 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

profiles


Recomiendo ver la CLI encapsulada en contenedor Docker. puede ejecutar contenedor para cada cuenta para un mejor aislamiento.


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

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

Puede poner estos alias internos, por ejemplo

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