Ansible没有从〜/ .aws /凭证中读取凭证

时间:2016-10-02 14:39:25

标签: python amazon-web-services ansible aws-cli

我正在使用dynamic inventory运行ansible。使用aws configure命令设置aws cli时,动态invetory的ansible命令正常运行。但我希望动态广告资源可以使用多个配置文件,因此我在~/.aws/credentials

中添加了个人资料
[personal]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXX

[default]
aws_access_key_id = XXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXX

ansible没有获取这些凭据,并且在运行./ec2.py --list时它会给出错误:

Looks like AWS is down again:
EC2ResponseError: 401 Unauthorized
<?xml version="1.0" encoding="UTF-8"?>
<Response><Errors><Error><Code>AuthFailure</Code><Message>Authorization header or parameters are not formatted correctly.</Message></Error></Errors><RequestID>349d5311-54db-4e79-9bbc-2d60b9f15da5</RequestID></Response>

3 个答案:

答案 0 :(得分:0)

您是否尝试过将--profile PROFILE开关添加到ec2.py,如下所示。

SELECT  object_name,
    counter_name,
    cntr_value AS [value]
FROM    sys.dm_os_performance_counters
WHERE   LTRIM(RTRIM(object_name)) = 'SQLServer:Buffer Manager'
    AND LTRIM(RTRIM(counter_name)) = 'Page life expectancy' ;

答案 1 :(得分:0)

在@ uptime365的回答之后,这很可能不是Ansible / ec2.py问题。这是我的故障排除步骤:

您可以将awscli与这些凭据一起使用吗?

aws ec2 describe-instances --page-size 5
aws ec2 describe-instances --page-size 5 --profile personal

您可以将awscli与手动包含的凭据一起使用吗?

请注意,由于您指定了密钥,因此无需使用profile

AWS_ACCESS_KEY_ID="AKIA.." AWS_SECRET_ACCESS_KEY=".."  aws ec2 describe-instances --page-size 5

如果它抱怨该地区,请添加AWS_DEFAULT_REGION="us-east-1"或您选择的地区。

这些都不起作用

您的访问密钥或密码存在问题。每个字符有多少个?密钥应为20个字符,全部为大写字母和数字。秘密是40个字符,上/下/数字/标点符号。

答案 2 :(得分:0)

我也遇到了这个问题,并最终解决了它;问题是我的机器上的时钟已经漂移了几分钟。正确设置时间可以解决问题。

一路上我了解到aws cli使用boto3,而ec2.py使用boto。似乎boto3在身份验证方面的工作方式略有不同,因为就像@drishti一样,即使不是ec2.py,CLI也能为我工作。