J'ai créé une nouvelle clé d'accès et l'ai configurée dans l'AWS CLI avec aws configure
. Il a créé le fichier .ini
dans ~/.aws/config
. Quand je lance aws s3 ls
cela donne:
Une erreur client (InvalidAccessKeyId) s'est produite lors de l'appel de l'opération ListBuckets: L'ID de clé d'accès AWS que vous avez fourni n'existe pas dans nos enregistrements.
La stratégie AmazonS3FullAccess
est également attachée à l'utilisateur. Comment régler ceci?
Il se peut que vous ayez les anciennes clés exportées via des variables env (bash_profile) et, comme les variables env ont une priorité plus élevée que les fichiers d’informations d’identité, cela donne l’erreur "l’id de clé d’accès n’existe pas".
Supprimez les anciennes clés de bash_profile et vous seriez prêt à partir.
Cela m'est arrivé une fois plus tôt quand j'ai oublié que j'ai des informations d'identification dans bash_profile et que je me suis fait mal à la tête pendant un certain temps :)
Il semble que certaines valeurs aient déjà été définies pour les variables d'environnement AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY .
Si c'est le cas, vous pourrez voir certaines valeurs lors de l'exécution des commandes ci-dessous.
echo $AWS_SECRET_ACCESS_KEY
echo $AWS_ACCESS_KEY_ID
Vous devez réinitialiser ces variables si vous utilisez aws configure
Pour réinitialiser, exécutez les commandes ci-dessous.
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
Pour moi, je comptais sur IAM EC2 roles
pour donner accès à nos machines à des ressources spécifiques.
Je ne savais même pas qu'il y avait un fichier credentials
à ~/.aws/credentials
, jusqu'à ce que j'aie tourné/retiré certaines de nos clés d'accès sur la console IAM afin de renforcer la sécurité, ce qui a soudainement arrêté l'un des scripts de fonctionner sur une seule machine.
La suppression de ce fichier credentials
l'a corrigé pour moi.
une autre chose qui peut causer ceci, même si tout est configuré correctement, est d’exécuter la commande à partir d’un Makefile. Par exemple, j'avais une règle:
awssetup:
aws configure
aws s3 sync s3://mybucket.whatever .
quand j'ai couru make awssetup
j'ai eu l'erreur: fatal error: An error occurred (InvalidAccessKeyId) when calling the ListObjects operation: The AWS Access Key Id you provided does not exist in our records.
. mais l'exécuter depuis la ligne de commande a fonctionné.
On dirait que ~/.aws/credentials
n'a pas été créé. Essayez de le créer manuellement avec ce contenu:
[default]
aws_access_key_id = sdfesdwedwedwrdf
aws_secret_access_key = wedfwedwerf3erfweaefdaefafefqaewfqewfqw
(Sur ma boîte de test, si j'exécute la commande aws
sans le fichier d'informations d'identification, l'erreur est Unable to locate credentials. You can configure credentials by running "aws configure".
) Pouvez-vous essayer d'exécuter ces deux commandes à partir du même shell que celui que vous essayez d'exécuter aws
:
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
puis essayez la commande aws
.
Aucune des réponses votées ne fonctionne pour moi. Enfin, je passe les informations d'identification à l'intérieur du script python, à l'aide de l'API client.
import boto3
client = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN)
Veuillez noter que l'argument aws_session_token est facultatif. Non recommandé pour les travaux publics, mais facilite la vie pour un procès simple.
J'ai essayé ci-dessous les étapes et cela a fonctionné: 1. cd ~ 2. cd .aws 3. vi Informations d'identification 4. supprimez aws_access_key_id = aws_secret_access_key = en plaçant le curseur sur cette ligne et en appuyant sur dd (commande vi pour la supprimer).
Supprimez la ligne et vérifiez le gain.
vous pouvez configurer des profils dans le fichier bash_profile en utilisant
<profile_name>
aws_access_key_id = <access_key>
aws_secret_access_key = <acces_key_secret>
si vous utilisez plusieurs profils. puis utilisez:
aws s3 ls --profile <profile_name>