it-roy-ru.com

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

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

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

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

27
kaushikdr

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

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

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

25
Manish Joshi

Похоже, что некоторые значения уже были установлены для переменных среды 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
15
Ashik Mohammed

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

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

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

3
marmor

еще одна вещь, которая может вызвать это, даже если все настроено правильно, - это запуск команды из 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.. но запуск его из командной строки работал.

1
jcomeau_ictx

Похоже, ~/.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.

1
Dusan Bajic

Ни один из ответов, за которые проголосовали, не работает для меня. Наконец, я передаю учетные данные внутри скрипта 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 является необязательным. Не рекомендуется для общественных работ, но облегчает жизнь для простого испытания.

0
Frank

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

Удалите обе линии и проверьте усиление.

0
Shubhangi

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

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

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

aws s3 ls --profile <profile_name>
0
Rahul Radhakrishnan