您提供的AWS Access Key ID在我们的记录中不存在,但是凭证已经设置

时间:2018-08-29 10:09:40

标签: amazon-web-services amazon-s3 boto3

通过boto3库,我成功地从AWS s3上传并下载了文件。 但是几个小时后,对于相同的代码,它突然显示InvalidAccessKeyId。

我做了什么:

  • set ~/.aws/credentials
  • Set environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY

我尝试了以下解决方案,但错误仍然严重。

adding quotes on config values

ref2

我想念什么吗?感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果您拥有~/.aws/credentials中的凭据,则无需设置环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY

环境变量仅对会话有效。

如果您使用的是boto3,则可以在创建客户端本身时指定凭据。

配置AWS凭证的最佳方法是从bash控制台安装AWS Command-Line Interface (CLI)并运行aws configure

~/.aws/credentials format

[default]
aws_access_key_id = ***********
aws_secret_access_key = ************

答案 1 :(得分:1)

您无需同时配置两个.aws/credentials AND 环境变量。

来自Credentials — Boto 3 documentation

  

Boto3搜索凭据的顺序为:

  • boto.client()方法中将凭据作为参数传递
  • 在创建会话对象时将凭据作为参数传递
  • 环境变量
  • 共享凭据文件(~/.aws/credentials
  • AWS配置文件(~/.aws/config
  • 承担角色提供者
  • Boto2配置文件(/etc/boto.cfg~/.boto
  • 已配置IAM角色的Amazon EC2实例上的实例元数据服务。

您的凭据在一段时间后停止工作的事实表明,它们是通过AWS Security Token Service创建的临时凭据,有效期到了。

答案 2 :(得分:0)

我发现了这个article,是因为同样的问题。 亚马逊建议生成新密钥,而我做到了。 这样就可以了,但是我们不知道根本原因。 建议这样做,以在遇到相同问题时节省大量时间。