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.
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é.
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.
AWS cli a 3 niveaux de lecture des variables
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.