Python Boto3:尝试使用EC2客户端查询AWS时AuthFailure

Python Boto3:尝试使用EC2客户端查询AWS时AuthFailure,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,我已经创建了一个小python脚本,它只是查询某些实例的AWS现货定价,这在昨天起作用,在过去的一周内一直有效。但是,尽管使用了不同的凭据,我运行此操作的计算机仍收到以下错误: aws_query = client.describe_spot_price_history( StartTime=today, EndTime=today, InstanceTypes=[ 'g2.2xlarge' ],

我已经创建了一个小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确认其使用的凭据吗

首先检查实例是否具有与其关联的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

首先检查实例是否具有与其关联的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

在我的头撞了几天墙之后,我发现问题实际上是服务器上的时区

已进行手动更新,以适应BST,但仅限于时间,而非时区

这意味着服务器与AWS不同步,虽然该错误毫无帮助,但它是完全合理的


更新NTP服务器并将时区更改为BST解决了该问题

在我的头撞了几天后,我发现问题实际上是服务器上的时区

已进行手动更新,以适应BST,但仅限于时间,而非时区

这意味着服务器与AWS不同步,虽然该错误毫无帮助,但它是完全合理的


更新NTP服务器并将时区更改为BST解决了该问题

谢谢,肯定有IAM的角色和资历。问题仍然存在,但无论如何,这实际上是非常有用的信息。谢谢,肯定有IAM角色和凭据。问题仍然存在,但无论如何,这实际上是非常有用的信息。在策略模拟器中测试角色如何@mootmoot我将添加我自己的答案。这个问题实际上是服务器上的时间同步问题。你能把这个问题提交给AWS论坛吗?虽然这很少见,但我并没有发现STS提到时区要求。所以如果AWS更新他们的文档,这是很有帮助的。绝对可以!抱歉耽搁了。在策略模拟器中测试角色如何@mootmoot我将添加我自己的答案。这个问题实际上是服务器上的时间同步问题。你能把这个问题提交给AWS论坛吗?虽然这很少见,但我并没有发现STS提到时区要求。所以如果AWS更新他们的文档,这是很有帮助的。绝对可以!抱歉耽搁了。嘿,我也面临着类似的问题。这个问题在boto3的后续版本中解决了吗?嘿,我面临着一个类似的问题。boto3的后续版本是否解决了该问题?