我使用Ansible的动态库存功能使用以下内容连接到AWS账户中的ec2实例:
AWS_PROFILE=personal ansible-playbook cifarm.yml -C
我已将https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.py复制到库存目录下的https://raw.github.com/ansible/ansible/devel/contrib/inventory/ec2.ini文件中。
在运行AWS_PROFILE=personal ansible-playbook cifarm.yml -C
时,它会抛出以下错误:
输出: 错误:库存脚本(inventory / ec2.py)出现执行错误:ERROR:"验证错误,检索ec2库存。 - 找到了AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY环境变量,但可能不正确 - 在'〜/ .boto,〜/ .aws / credentials'中找到Boto配置,但包含的凭据可能不正确",而:获取EC2实例
我正在从MAC OS运行剧本。请注意,我能够成功运行:
aws ec2 describe-instances --page-size 5 --profile personal
这证明凭据是正确的,并且我已导出AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY。
我尝试执行inventory / ec2.py文件,如下所示:
./ec2.py --list
然后又出现了同样的错误。我看到一个帖子,建议更新机器上的时间,我正在运行剧本。所以我运行了ntpdate -u
但问题仍然存在。我不知道是什么原因。 非常感谢任何帮助/建议。
答案 0 :(得分:3)
我设法解决了这个问题。在这里解释它让其他人受益。当我为AWS_PROFILE = personal生成aws凭据时,我在〜/ .aws / credentials中有以下环境变量的值:
但是,如果你查看ec2.py,它需要一个名为aws_security_token的变量值。所以我所做的就是将变量名从aws_session_token更改为〜/ .aws / credentials中的aws_security_token。
瞧。工作正常。