Boto3:尝试使用EC2客户端

时间:2017-04-26 13:11:26

标签: python amazon-web-services boto3

我创建了一个小的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确认它正在使用的凭据?

2 个答案:

答案 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解决了该问题。