web-dev-qa-db-fra.com

L'ID de clé d'accès AWS n'existe pas dans nos enregistrements.

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? 

27
kaushikdr

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 :)

25
Manish Joshi

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
15
Ashik Mohammed

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.

3
marmor

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é.

1
jcomeau_ictx

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.

1
Dusan Bajic

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.

0
Frank

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.

0
Shubhangi

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>
0