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:
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}}
- {{aws_access_key_id}} puede acceder a la sección Consola de AWS> Administración de identidades y accesos> Credenciales de seguridad> Claves de acceso
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
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