通过boto3库,我成功地从AWS s3上传并下载了文件。 但是几个小时后,对于相同的代码,它突然显示InvalidAccessKeyId。
我做了什么:
set ~/.aws/credentials
Set environment variables AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
我尝试了以下解决方案,但错误仍然严重。
adding quotes on config values
我想念什么吗?感谢您的帮助。
答案 0 :(得分:1)
如果您拥有~/.aws/credentials
中的凭据,则无需设置环境变量AWS_ACCESS_KEY_ID
和AWS_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/config
)/etc/boto.cfg
和~/.boto
)您的凭据在一段时间后停止工作的事实表明,它们是通过AWS Security Token Service创建的临时凭据,有效期到了。
答案 2 :(得分:0)
我发现了这个article,是因为同样的问题。 亚马逊建议生成新密钥,而我做到了。 这样就可以了,但是我们不知道根本原因。 建议这样做,以在遇到相同问题时节省大量时间。