我们的记录中不存在 AWS Access Key Id

我创建了一个新的 Access Key,并在 AWS CLI 中配置了 aws configure。它在 ~/.aws/config中创建了 .ini文件。当我运行 aws s3 ls时,它给出:

调用 ListBuckets 操作时发生客户端错误(InvalidAccessKeyId) : 您提供的 AWS Access Key Id 在我们的记录中不存在。

AmazonS3FullAccess策略也附加到用户。如何解决这个问题?

218021 次浏览

似乎没有创建 ~/.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的同一个 shell 中运行这两个命令吗:

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

然后尝试 aws命令。

另一个可能导致这种情况的原因是从 Makefile 运行命令,即使一切都设置正确。例如,我有一个规则:

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

when I ran make awssetup I got the error: fatal error: An error occurred (InvalidAccessKeyId) when calling the ListObjects operation: The AWS Access Key Id you provided does not exist in our records.. but running it from the command line worked.

可能会发生这样的情况: 通过 env 变量(bash _ profile)导出旧的密钥,由于 env 变量的优先级高于凭证文件,因此会出现“访问密钥 id 不存在”的错误。

从 bash _ profile 中删除旧的键,就可以了。

之前有一次,我忘记了自己在 bash _ profile 中具有凭据,这让我头疼了很长一段时间:)

似乎已经为环境变量 AWS _ ACCESS _ KEY _ ID密钥设置了一些值。

如果是这样的话,您可以在执行下面的命令时看到一些值。

echo $AWS_SECRET_ACCESS_KEY
echo $AWS_ACCESS_KEY_ID

如果使用 aws configure,则需要重置这些变量

若要重置,请执行以下命令。

unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY

For me, I was relying on IAM EC2 roles to give access to our machines to specific resources.

我甚至不知道在 ~/.aws/credentials中有一个 credentials文件,直到我在 IAM 控制台上旋转/删除了一些访问密钥以加强安全性,这突然使得其中一个脚本在一台机器上停止工作。

Deleting that credentials file fixed it for me.

您可以在 bash _ profile 文件中使用

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

如果您使用多个配置文件,请使用:

aws s3 ls --profile <profile_name>

没有一个答案对我有用。最后,我使用客户端 API 在 python 脚本中传递凭据。

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 参数是可选的。不推荐用于公共工作,但是可以使简单的试用变得更容易。

我尝试了以下步骤,结果奏效了: 1. cd ~ 2. cd .aws 3. vi credentials 4. delete Aws _ access _ key _ id = Aws _ secret _ access _ key = by placing cursor on that line and pressing dd (vi command to delete line).

删除行和检查增益。

Adding one more answer since all the above cases didn't work for me.

在 AWS 控制台中,检查您的凭据(MySecurity凭据) ,并查看是否输入了正确的凭据。

多亏了这次讨论: https://forums.aws.amazon.com/message.jspa?messageID=771815

如果你有一个 AWS 教育账户,你会遇到这个问题:

调用 ListBuckets 操作时发生错误(InvalidAccessKeyId) : 您提供的 AWS Access Key Id 在我们的记录中不存在”。

解决办法就在这里:

  1. 转到您的 C:/驱动器和搜索 .aws文件夹在您的主文件夹在窗口。

  2. 在这个文件夹中,你可以得到“凭证”文件并用记事本打开它。

  3. 将整个密钥凭证从 AWS 帐户粘贴到同一个记事本并保存。

  4. 现在您已经准备好使用您的 AWS 教育帐户。

你可能需要设定 ABc0环境变量。

需要在凭据中添加 aws_session_token,以及 aws_access_key_idaws_secret_access_key

这可能是因为你的 AWS Secret Access Key出了问题。在使用 AWS Amplify之后,我遇到了这个问题。最快的方法是创建一个新的 AWS Access Key IDAWS Secret Access Key对,然后再次运行 aws configure。 我为自己工作,希望这能帮上忙。

对于那些运行 aws s3 ls并获得此异常的用户。确保您对所提供的 AWS 帐户下的所有区域都有权限。当运行 aws s3 ls时,您尝试在 AWS 帐户下拉出所有的 s3存储桶。因此,如果您没有对所有区域的权限,您将得到这个异常 -An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.

更多信息请关注 使用 AWS CLI 描述您的区域

假设您已经检查了 Access Key IDSecret... ... 您可能想检查文件 team-provider-info.json,它可以在 amplify/文件夹下找到

"awscloudformation": {
"AuthRoleName": "<role identifier>",
"UnauthRoleArn": "arn:aws:iam::<specific to your account and role>",
"AuthRoleArn": "arn:aws:iam::<specific to your account and role>",
"Region": "us-east-1",
"DeploymentBucketName": "<role identifier>",
"UnauthRoleName": "<role identifier>",
"StackName": "amplify-test-dev",
"StackId": "arn:aws:cloudformation:<stack identifier>",
"AmplifyAppId": "<id>"
}

这里引用的 IAM 角色应该在 IAM 控制台中处于活动状态。

如果在 放大项目中出现此错误,请检查 "awsConfigFilePath"是否在 放大/. config/local-aws-info. json中配置

在我的情况下,我不得不移除它,所以我的环境看起来如下:

{
// **INCORRECT**
// This will not use your profile in ~/.aws/credentials, but instead the
// specified config file path
// "dev": {
//  "configLevel": "project",
//  "useProfile": false,
//  "awsConfigFilePath": "/Users/dev1/.amplify/awscloudformation/cEclTB7ddy"
// },
// **CORRECT**
"dev": {
"configLevel": "project",
"useProfile": true,
"profileName": "default",
}
}

I made the mistake of setting my variables with quotation marks like this:

AWS_ACCESS_KEY_ID="..."

您可能已经正确地配置了 AWS 凭据,但是使用这些凭据,您可能连接到某个特定的 S3端点 (我的情况也是如此)

不使用:

aws s3 ls

尝试使用:

aws --endpoint-url=https://<your_s3_endpoint_url> s3 ls

希望这对那些面临类似问题的人有所帮助。

也许你需要激活你的网络控制台的 api 键,我刚刚看到我的是不活动的某些原因..。

我在 windows 和使用 javascript 的模块 Aws-sdk时遇到了同样的问题。我已经更改了我的 IAM 凭据,即使我通过如下方法更新来提供新凭据,问题仍然存在

s3.config.update({
accessKeyId: 'ACCESS_KEY_ID',
secretAccessKey: 'SECRET_ACCESS_KEY',
region: 'REGION',
});


过了一会儿,我发现 aws-sdk 模块已经在 Windows 上的 User 文件夹中创建了一个文件

C: UserUser.aws 凭证

。此文件中的凭据优先于通过方法更新传递的其他数据。

The solution for me was to write here

C: UserUser.aws 凭证

而不是使用 s3.config.update 方法

请从下面的目录中从凭据文件导出以下变量。

path = .aws/
filename = credentials


export aws_access_key_id = AK###########GW
export aws_secret_access_key = g#############################J

谢谢大家,这有助于解决。

不知怎么的,一些事情发生了,改变了键和我没有意识到,因为一切都工作正常,直到我连接到 S3从一个火花... 然后从命令行也开始出现错误,甚至在 AWS S3 ls

Steps to solve

  1. 运行 AWS configure 来检查是否设置了密钥(从最后4个字符开始验证并按回车键)
  2. AWS 控制台—— > 用户—— > 单击用户—— > 转到安全凭据—— > 检查密钥是否与 AWS configure 中显示的密钥相同
  3. If both not the same, then generate a new key, download csv
  4. 运行—— > AWS 配置,设置新密钥
  5. 现在试试 AWS S3系统

在我的情况下,在所有地方更改键是在 Cloudera 的 config。

我不知道如何让系统接受我的 Vocareum 凭证,所以我利用了 如果您将您的实例配置为使用 IAM 角色,SDK 将自动为您的应用程序选择 IAM 凭据,从而消除了手动提供凭据的需要这个事实。

Once a role with appropriate permissions was applied to the EC2 instance, I didn't need to provide any credentials.

打开 ~/.bash_profile文件,使用在创建新用户时收到的新值编辑信息:

export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_DEFAULT_REGION=us-east-1

然后,运行命令:

source ~/.bash_profile

这将为本地计算机启用新密钥。现在,我们还需要在终端中配置信息。运行命令-

aws configure

按照要求提供新的价值,你就可以开始了。

In my case, I was trying to provision a new bucket in Hong Kong region, which is not enabled by default, according to this: Https://docs.aws.amazon.com/general/latest/gr/s3.html

它并不完全与 OP 的问题相关,而是与主题本身相关,所以如果有人像我一样发现困在这个边缘情况:

在操作 AWS s3区域之前,我必须手动启用该区域,遵循以下指南: https://docs.aws.amazon.com/general/latest/gr/rande-manage.html

In my case, I was using aws configure

但是,我手工编辑了 .aws/config文件以导出 KeyID 和关键环境变量。

这显然导致了一个无声的错误,并且看到了上面列出的错误。

我通过销毁 .aws目录并再次运行 aws configure来解决这个问题。

我一直在寻找关于这个问题的信息,我找到了这篇文章。我知道这个职位有些年头了,但是如果有人有什么问题的话,我想离开这个职位。

好的,我已经安装了 AWS CLI并打开了:

aws cli

It seems that you need to run aws configure to add the current credentials. Once changed, I can access

希望这能让其他人免于数小时的沮丧:

在初始化 s3之前调用 aws.config.update({

const AWS = require('aws-sdk');


AWS.config.update({
accessKeyId: 'AKIAW...',
secretAccessKey: 'ptUGSHS....'
});


const s3 = new AWS.S3();

这个问题的答案是:

https://stackoverflow.com/a/61914974/11110509

我曾经遇到这个问题时,试图 将 RDS 邮政数据导出到 S3以下的 this official guide

故障排除提示:

  • 使用 重置 RDS 凭据:
    DROP EXTENSION aws_s3 CASCADE;
    DROP EXTENSION aws_commons CASCADE;
    CREATE EXTENSION aws_s3 CASCADE;
    
  • 删除并添加用于 s3Export特性的 DB 实例角色 。之后再次可选地重置 RDS 凭据(以前的操作点)。

下面你会发现更多关于我的案件的细节。

In particular, I have encountered:

[XX000] ERROR: could not upload to Amazon S3
Details: Amazon S3 client returned 'The AWS Access Key Id you provided does not exist in our records.'.

为了能够执行导出到 S3,应该将 RDS DB 实例配置为承担具有写入 S3 bucket 权限的角色,the guide描述了这些步骤。

错误的原因是在 aws_s3.query_export_to_s3 Postgres 过程中使用了一些(缓存?)无效的假定凭证。我仍然不知道它使用了哪种凭证,但我已经设法使用 AWS CLI 实现了同样的行为:

  • 我扮演了一个角色(aws sts assume-role) ,
  • And then tried to perform another action (aws s3 cp in particular) with this credentials without session token (only AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY without AWS_SESSION_TOKEN).

这会导致 AWS CLI: An error occurred (InvalidAccessKeyId) when calling the PutObject operation: The AWS Access Key Id you provided does not exist in our records.出现相同的错误

简而言之: 硬重置 RDS 凭据有所帮助。

打开 aws 帐户-> > goto iam —— > > goto users —— > select the user —— > > goto 凭证文件-> > create access key and copy them to a text file。

那么 通过命令行访问. aws 文件 检查用户标识和访问密钥 将它们替换为从 iam 帐户提供给适当用户的访问密钥和秘密密钥。

应该能行

我刚为这个错误/情况找到了另一个原因/补救措施。我在运行 PowerShell 脚本时出错了。在执行 Write-S3Object 时发生错误。我使用 AWS 已经有一段时间了,并且已经成功地运行了这个脚本,但是有一段时间没有运行它了。

我通常设置 AWS 凭据的方法是: Set-AWSCredential -ProfileName <THE_PROFILE_NAME>

I tried the "aws configure" command and every other recommendation in this forum post. No luck.

我知道。Aws 凭证文件,并在那里看了一下。我只有三个配置文件,其中一个是[默认]。一切看起来都很好,但是后来我注意到一个新的元素,出现在所有3个配置文件中,这是我以前没有看到过的:

 toolkit_artifact_guid=64GUID3-GUID-GUID-GUID-004GUID236
(GUID redacting added by me)

然后我注意到这个元素在我运行的配置文件和[默认]配置文件之间有所不同,[默认]配置文件是相同的配置文件,除了那个。

On a hunch I changed the toolkit_artifact_guid in the [default] to match it to my target profile, and no more error. I have no idea why.

试试这个

您提供的 AWS Access Key Id 在我们的记录中不存在。

获得上述错误的原因之一是当通过 Aws 配置设置的 Aws 默认区域实际帐户区域实际帐户区域不同时。

检查 默认区域控制台上的帐户区域。