Идентификатор ключа доступа AWS не существует в наших записях

Я создал новый ключ доступа и настроил его в AWS CLI с aws configure. Он создал файл .ini файле ~/.aws/config. Когда я запускаю aws s3 ls он дает:

При вызове операции ListBuckets произошла ошибка клиента (InvalidAccessKeyId): идентификатор ключа доступа AWS, который вы указали, не существует в наших записях.

Политика пользователя AmazonS3FullAccess также привязана к пользователю. Как это исправить?

Ответ 1

Возможно, у вас есть старые ключи, экспортированные через переменные env (bash_profile), и поскольку переменные env имеют более высокий приоритет над файлами учетных данных, он сообщает об ошибке "идентификатор ключа доступа не существует".

Удалите старые ключи из файла bash_profile, и вам будет хорошо идти.

Случилось со мной когда-то раньше, когда я забыл, что у меня есть учетные данные в bash_profile и довольно долго болел головной болью :)

Ответ 2

Похоже, что некоторые значения уже установлены для переменных окружения AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.

Если это так, вы можете увидеть некоторые значения при выполнении приведенных ниже команд.

echo $AWS_SECRET_ACCESS_KEY
echo $AWS_ACCESS_KEY_ID

Вам необходимо сбросить эти переменные, если вы используете aws configure

Для сброса выполните команды ниже.

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

Ответ 3

Для меня я полагался на IAM EC2 roles чтобы предоставить доступ к нашим машинам для конкретных ресурсов.

Я даже не знал, что есть файл credentials в ~/.aws/credentials, пока я не повернул/не удалил некоторые из наших accessKeys на консоли IAM, чтобы усилить нашу безопасность, и это внезапно заставило один из скриптов перестать работать на одном машина.

Удаление этого файла credentials исправило его для меня.

Ответ 4

Похоже, что ~/.aws/credentials не было создано. Попробуйте создать его вручную с помощью этого содержимого:

[default]
aws_access_key_id = sdfesdwedwedwrdf
aws_secret_access_key = wedfwedwerf3erfweaefdaefafefqaewfqewfqw

(в моем тестовом поле, если я запустил команду aws без файла учетных данных, ошибка будет Unable to locate credentials. You can configure credentials by running "aws configure".) Можете ли вы попробовать запустить эти две команды из той же самой оболочки, которую вы пытаетесь для запуска aws:

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

а затем попробуйте команду aws.

Ответ 5

другая вещь, которая может вызвать это, даже если все настроено правильно, запускает команду из Makefile. например, у меня было правило:

awssetup:
        aws configure
        aws s3 sync s3://mybucket.whatever .

когда я запустил make awssetup я получил ошибку: fatal error: An error occurred (InvalidAccessKeyId) when calling the ListObjects operation: The AWS Access Key Id you provided does not exist in our records. , но запустить его из командной строки.

Ответ 6

вы можете настроить профили в файле bash_profile, используя

<profile_name>
aws_access_key_id = <access_key>
aws_secret_access_key = <acces_key_secret>

если вы используете несколько профилей. затем используйте:

aws s3 ls --profile <profile_name>

Ответ 7

Ни один из опрошенных ответов не работает для меня. Наконец, я передаю учетные данные внутри скрипта python, используя API-интерфейс клиента.

import boto3
client = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN)

Обратите внимание, что аргумент aws_session_token не является обязательным. Не рекомендуется для публичной работы, но облегчает жизнь для простого испытания.

Ответ 8

Я пытаюсь выполнить следующие шаги: 1. cd ~ 2. cd.aws 3. vi credentials 4. delete aws_access_key_id = aws_secret_access_key =, поместив курсор на эту строку и нажав dd (команда vi для удаления строки).

Удалите как линию, так и коэффициент проверки.