我创建了一个小的python脚本,它只是查询某些实例的AWS现货定价,这在昨天工作并且已经过去一周了。但是,尽管使用不同的凭据,我运行此功能的计算机仍会收到以下错误:
aws_query = client.describe_spot_price_history(
StartTime=today,
EndTime=today,
InstanceTypes=[
'g2.2xlarge'
],
ProductDescriptions=[
'Linux/UNIX',
],
MaxResults=3
)
返回以下内容:
botocore.exceptions.ClientError:调用DescribeSpotPriceHistory操作时发生错误(AuthFailure):AWS无法验证提供的访问凭据
我理解错误,但没有任何意义。与正在运行的实例关联的IAM角色肯定具有执行此操作的权限。
我无法想到会对此产生影响的变化。
请注意,此脚本可以从我的本地计算机上运行。
有没有人有任何想法可能导致这个?
作为替代方案 - 有谁知道我怎么能要求Boto3确认它正在使用的凭据?
答案 0 :(得分:1)
首先检查实例是否具有与之关联的IAM角色:
curl http://169.254.169.254/latest/meta-data/iam/info
如果您想获取该实例的临时凭证,请尝试以下操作:
import boto3
print boto3.Session().get_credentials().access_key
print boto3.Session().get_credentials().secret_key
答案 1 :(得分:1)
在我的头撞墙后几天,我发现问题实际上与服务器上的时区有关。
已经进行了手动更新以适应BST,但仅限于时间,而不是时区。
这意味着服务器与AWS不同步,虽然错误非常无用,但这是完全合理的。
更新NTP服务器并将时区更改为BST解决了该问题。