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

时间:2016-08-20 07:05:51

标签: amazon-web-services amazon-s3 aws-cli

我创建了一个新的访问密钥,并在AWS CLI中使用aws configure对其进行了配置。它在.ini中创建了~/.aws/config文件。当我运行aws s3 ls时,它会给出:

  

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

AmazonS3FullAccess政策也附在用户身上。如何解决这个问题?

23 个答案:

答案 0 :(得分:28)

可能会发生通过env变量(bash_profile)导出旧密钥,并且因为env变量优先于凭证文件,所以它会给出错误“访问密钥ID不存在”。

从bash_profile中删除旧密钥,你就可以了。

早些时候,当我忘记了bash_profile中的凭据并且让我头疼了很长时间时,我曾经和我发生过关系:)

答案 1 :(得分:20)

看起来已经为环境变量 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

答案 2 :(得分:9)

除了aws_access_key_idaws_secret_access_key之外,我还在凭据中添加了aws_session_token,它对我有用

答案 3 :(得分:3)

对我来说,我依靠IAM EC2 roles来访问我们的机器以获取特定资源。

我甚至不知道在credentials有一个~/.aws/credentials文件,直到我在IAM控制台上旋转/删除了一些我们的accessKeys来加强我们的安全性,然后它突然变成了一个脚本停止在一台机器上工作。

删除credentials文件为我修复了它。

答案 4 :(得分:1)

另一件可能导致这种情况的事情,即使一切设置正确,也是从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.。但是从命令行运行它。

答案 5 :(得分:1)

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

'

答案 6 :(得分:1)

我犯了这样的错误:用这样的引号设置变量:

AWS_ACCESS_KEY_ID="..."

答案 7 :(得分:1)

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

关注Describing your Regions using the AWS CLI以获取更多信息。

答案 8 :(得分:1)

您可能需要设置AWS_DEFAULT_REGION环境变量。

答案 9 :(得分:0)

如果您拥有一个AWS Educate帐户,则会遇到此问题:

  

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

解决方案在这里:

  1. 转到C:/驱动器,然后在Windows主文件夹中搜索.aws文件夹。

  2. 在该文件夹中,您将获得“凭据”文件,并使用记事本打开它。

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

  4. 现在您可以使用您的AWS Educate帐户了。

答案 10 :(得分:0)

再添加一个答案,因为上述所有情况都不适合我。

在AWS控制台中,检查您的凭证(“我的安全凭证”),看看您是否输入了正确的凭证。

感谢此讨论: https://forums.aws.amazon.com/message.jspa?messageID=771815

答案 11 :(得分:0)

我尝试以下步骤并且有效: 1. cd~ 2. cd .aws 3. vi凭证 4.删除 aws_access_key_id = aws_secret_access_key = 将光标放在该行并按dd(vi命令删除行)。

删除该行并检查增益。

答案 12 :(得分:0)

之所以会发生,是因为您的AWS Secret Access Key存在问题。在弄乱AWS Amplify之后,我遇到了这个问题。最快的方法是创建一对新的AWS Access Key IDAWS Secret Access Key,然后再次运行aws configure。 我为我工作。希望对您有所帮助。

答案 13 :(得分:0)

所有上升的答案都不适合我。最后,我使用客户端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参数是可选的。不推荐用于公共工作,但简化试用会让生活更轻松。

答案 14 :(得分:0)

假设您已经检查了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控制台中处于活动状态。

答案 15 :(得分:0)

如果在 Amplify 项目中遇到此错误,请检查是否未在 amplify / .config / local-aws-info.json 中配置"awsConfigFilePath"

就我而言,我必须将其删除,因此我的环境如下所示:

{
  // **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",
  }
}

答案 16 :(得分:0)

您可以使用

在bash_profile文件中配置配置文件
<profile_name>
aws_access_key_id = <access_key>
aws_secret_access_key = <acces_key_secret>

如果您使用多个配置文件。然后使用:

aws s3 ls --profile <profile_name>

答案 17 :(得分:0)

您可能已经正确配置了AWS凭证,但是使用这些凭证,您可能正在连接到某些特定的S3终端节点(就像我一样)

代替使用:

aws s3 ls

尝试使用:

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

希望这可以帮助面临类似问题的人。

答案 18 :(得分:0)

也许您需要在 Web 控制台中激活您的 api 密钥,我刚刚看到我的由于某种原因处于非活动状态...

答案 19 :(得分:0)

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

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

一段时间后,我发现模块 aws-sdk 在 Windows 上的文件夹 User 中使用此路径创建了一个文件

<块引用>

C:\Users\User\.aws\credentials

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

我的解决方案是在这里写

<块引用>

C:\Users\User\.aws\credentials

新凭据而不是 s3.config.update 方法

答案 20 :(得分:0)

看起来没有创建~/.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命令。

答案 21 :(得分:0)

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

不知何故发生了一些改变密钥的事情&我没有意识到因为一切正常,直到我从火花连接到 S3 ......然后从命令行也开始出现错误,即使在 AWS s3 ls 中也是如此

解决步骤

  1. 运行 AWS configure 以检查是否设置了密钥(从最后 4 个字符进行验证并按住 Enter)
  2. AWS 控制台 --> 用户 --> 单击用户 --> 转到安全凭证--> 检查密钥是否与 AWS 配置中显示的密钥相同
  3. 如果两者不一样,则生成一个新的密钥,下载csv
  4. 运行 --> AWS 配置,设置新密钥
  5. 立即试用 AWS s3 ls

在我的情况下在所有地方更改密钥,它是 Cloudera 中的配置。

答案 22 :(得分:0)

我不知道如何让系统接受我的 Vocareum 凭据,所以我利用了 if you configure your instance to use IAM roles, the SDK automatically selects the IAM credentials for your application, eliminating the need to manually provide credentials 这一事实。

一旦将具有适当权限的角色应用于 EC2 实例,我就不需要提供任何凭据。