web-dev-qa-db-fra.com

Comment utiliser plusieurs comptes AWS à partir de la ligne de commande?

J'ai deux applications différentes que j'héberge (bien que la seconde soit sur le point de monter) sur Amazon EC2.

Comment utiliser les deux comptes en ligne de commande (Mac OS X) tout en maintenant les clés et les certificats EC2 séparés? Dois-je modifier mes variables d'environnement avant chaque commande ec2- *? 

Est-ce que l'utilisation d'un alias et son paramétrage du travail en ligne sur l'environnement? Quelque chose comme:

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

74
Matt Culbreth

Vous devriez pouvoir utiliser les options de commande suivantes à la place des variables d'environnement EC2_PRIVATE_KEY (et même EC2_CERT):

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

Vous pouvez mettre ces alias à l'intérieur, par exemple.

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

Vous pouvez travailler avec deux comptes en créant deux profiles sur la ligne de commande aws . Il vous demandera votre ID de clé d’accès AWS, clé d’accès secrète AWS et la région désirée. . 

Exemples:

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

Vous pouvez ensuite basculer entre les comptes en transmettant le profil à la commande.

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

Remarque: 

Si vous nommez le profil comme étant default, il deviendra profil par défaut, c’est-à-dire si aucun --profile param dans la commande.


Plus sur le profil par défaut

Si vous passez plus de temps avec account1, vous pouvez en faire la valeur par défaut en définissant la variable d'environnement AWS_DEFAULT_PROFILE. Lorsque la variable d'environnement par défaut est définie, il n'est pas nécessaire de spécifier le profil dans chaque commande.

Linux, OS X Exemple:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Exemple Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
191
iBrianCox

Peut-être que ça aide toujours quelqu'un. Vous pouvez le définir manuellement.

1) mis en fichier

~/.aws/credentials

ce

[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) Définir dans le fichier

~/.aws/config

ce

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

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

3) Testez-le avec AWS Command Line et les commandes et les résultats seront 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

34
BG Bruno

Les nouveaux outils aws prennent désormais en charge plusieurs profils. 

Si vous configurez l'accès avec les outils, cela crée automatiquement une valeur par défaut dans ~/.aws/config.

Vous pouvez ensuite ajouter des profils supplémentaires - plus de détails sur:

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

6
chris

Vous pouvez écrire un script Shell pour définir les valeurs correspondantes des variables d'environnement pour chaque compte en fonction des entrées de l'utilisateur. Ainsi, vous n'avez pas besoin de créer d'alias. De plus, des outils tels que les outils ELB et les outils de ligne de commande Auto Scaling fonctionnent également sous plusieurs comptes.

0
Roman Newaza