Идентификатор ключа доступа 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 для удаления строки).
Удалите как линию, так и коэффициент проверки.