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

115

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

Comment puis-je travailler avec les deux comptes en ligne de commande (Mac OS X) tout en conservant les clés et 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 l'avoir pour le réglage de l'environnement en ligne fonctionnerait? Quelque chose comme:

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

Matt Culbreth
la source

Réponses:

17

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

  • -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
vladr
la source
310

Vous pouvez travailler avec deux comptes en créant deux profils sur la ligne de commande aws. Il vous demandera votre ID de clé d'accès AWS, votre clé d'accès secrète AWS et la région souhaitée, alors préparez-les.

Exemples:

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

Vous pouvez ensuite basculer entre les comptes en passant le profil sur la commande.

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

Remarque:

Si vous nommez le profil, defaultil deviendra le profil par défaut, c'est-à-dire sans --profileparamètre dans la commande.


En savoir plus sur le profil par défaut

Si vous passez plus de temps à utiliser 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, vous n'avez pas besoin de spécifier le profil pour chaque commande.

Exemple Linux, OS X:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Exemple Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
la source
Pour configurer la région - voici la liste des «codes» de région - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon
66

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

1) Mettre 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) Mettre 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 la commande et la sortie seront JSON

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

Réf

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

BG BRUNO
la source
2
@iBrianCox - Ces informations doivent de préférence être fusionnées dans la réponse la plus votée ( stackoverflow.com/a/34246053/1199564 ) car elles permettent à un utilisateur de comprendre comment déplacer les paramètres d'un profil à un autre si, par exemple, vous avez commencé avec uniquement le profil par défaut et souhaitez continuer avec des profils dédiés et séparés.
mgd
@slm s'il vous plaît lire mon commentaire ci-dessus (n'a pu faire qu'une seule mention par commentaire)
mgd
@mgd merci pour la suggestion, mais non - car au début cette réponse n'est pas la mienne - et deuxièmement, c'est une approche différente comment la définir
BG BRUNO
@mgd Q pouvez-vous décrire plus en détail ce que vous entendez par «une mention par commentaire»?
BG BRUNO
Ce que je voulais dire, c'est que dans mon premier commentaire, j'avais l'intention de mentionner à la fois iBrianCox et slm (auteur et éditeur de l'autre réponse respectivement) mais vous n'êtes autorisé à faire qu'une seule mention par commentaire, j'ai donc dû ajouter un autre commentaire afin de mentionner les deux . Vous avez raison de dire que votre réponse est une approche différente, mais il est très utile de savoir où les informations sont stockées, en particulier si vous avez l'intention de copier des paramètres entre les profils.
mgd
0

Vous pouvez écrire un script shell pour définir les valeurs correspondantes des variables d'environnement pour chaque compte en fonction de l'entrée utilisateur. Ce faisant, vous n'avez pas besoin de créer d'alias et, en outre, des outils tels que les outils ELB, les outils de ligne de commande Auto Scaling fonctionneront également sous plusieurs comptes.

Roman Newaza
la source
0

J'ai créé un outil simple, aaws , pour basculer entre les comptes AWS.

Cela fonctionne en définissant le AWS_DEFAULT_PROFILEdans votre shell. Assurez-vous simplement d'avoir des entrées dans votre ~/.aws/credentialsfichier et il basculera facilement entre plusieurs comptes.

/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
la source