web-dev-qa-db-fra.com

Comment changer temporairement de profil pour AWS CLI?

Edit: Voici la solution qui a fonctionné pour moi:

export AWS_DEFAULT_PROFILE=user2

La question complète est ci-dessous pour le contexte:


(1.) Après avoir configuré avec succès un deuxième profil pour l'AWS CLI, j'ai sans succès essayé de définir le profil sur user2 dans ma session bash avec la commande suivante:

export AWS_PROFILE=user2

... selon les conseils ici: https://docs.aws.Amazon.com/cli/latest/userguide/cli-multiple-profiles.html

(2.) La commande suivante fonctionne:

aws s3 ls --profile user2

Je sais donc que l'AWS CLI et le profil user2 fonctionnent tous les deux sur mon ordinateur.

(3.) Cependant, lorsque j'essaie par la suite (c'est-à-dire après avoir entré "export AWS_PROFILE = user2") d'essayer quelque chose comme:

aws s3 ls

... la réponse d'AWS suppose que je souhaite l'interroger en tant qu'utilisateur par défaut (PAS utilisateur2)

(4.) Donc, la seule façon d'utiliser le profil user2 à partir de la ligne de commande est de continuer à ajouter "--profile user2" à chaque commande, ce qui est fastidieux.

(5.)

echo $AWS_PROFILE

rendements:

>> user2

, comme prévu.

Une idée de ce qui se passe ici? Je suis sûr que je fais quelque erreur stupide quelque part.

23
James Shapiro

La solution la plus propre est:

export AWS_DEFAULT_PROFILE=user2

Ensuite, des commandes comme:

aws s3 ls

... sont gérés à partir du compte approprié.

27
James Shapiro

Vous pouvez voir comment cela fonctionne en faisant cela

$ export AWS_PROFILE=myprofile
$ aws s3 ls --debug 2>&1 | grep profile
2018-04-08 19:19:17,990 - MainThread - botocore.session - DEBUG - Loading variable profile from environment with value 'myprofile'.

Je doute que cela fonctionne différemment pour vous.

Vous pouvez également vérifier que

$ AWS_PROFILE=myprofile aws s3 ls --debug 2>&1 | grep profile

et

$ aws s3 ls --profile myprofile --debug 2>&1 | grep profile

tous donnent le même résultat.

1

AWS cli a 3 niveaux de lecture des variables

  • variables d'environnement de key_id/key_secret
  • profil via cred/config (normalement dans ~/.aws/cre ...)
  • valeur manuelle fournie en ligne

voir: https://docs.aws.Amazon.com/cli/latest/topic/config-vars.html#credentials

une façon sera remplacée par une autre. basé sur OP, il se peut que bien que DEFAULT_PROFILE soit défini comme userX, les variables d'environnement AWS_ACCESS_KEY_ID et/ou AWS_SECRET_ACCESS_KEY sont définies sur autre chose.

Vous pouvez créer un alias pour une fonction Shell qui charge les informations d'identification dans l'environnement actuel via l'utilisation de

"export AWS_ACCESS_KEY_ID=XXXXXXX;"... and more

ou pour un chargement plus sûr via un gestionnaire de secrets

"export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile XXXX)"... and more

Exportez toutes les clés d'accès/secrets, etc., puis vérifiez que les bonnes informations d'identification sont chargées en mémoire via

aws configure list

enfin .. faites une réinitialisation de la variable à "default" .. comme une bonne habitude pour vous assurer de faire ce dont vous avez besoin en tant que rôle AWS; en particulier lors de l'utilisation de plusieurs profils. J'espère que cela t'aides.

0
Jimmy MG Lim