amazon-web-services - Ansible 动态 list : Authentication error retrieving ec2 inventory

标签 amazon-web-services dynamic ansible ansible-inventory

我正在使用 Ansible 的动态 list 功能连接到 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) 出现执行错误:错误:“检索 ec2 库存时出现身份验证错误。 - 找到 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 环境变量,但可能不正确 - Boto 配置在“~/.boto、~/.aws/credentials”中找到,但包含的凭证可能不正确”,同时:获取 EC2 实例

我正在从 MAC 操作系统运行该剧本。请注意,我能够成功运行以下内容:

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

但问题仍然存在。我不知道是什么原因。 非常感谢任何帮助/建议。

最佳答案

我设法解决了这个问题。在此解释一下,以供其他人受益。当我为 AWS_PROFILE= individual 生成 aws 凭证时,我在 ~/.aws/credentials 中有以下环境变量的值:

  1. aws_access_key_id
  2. aws_secret_access_key
  3. aws_session_token。

但是,如果您查看 ec2.py,它需要名为 aws_security_token 的变量值。因此,我所做的就是将 ~/.aws/credentials 中的变量名称从 aws_session_token 更改为 aws_security_token。

瞧。工作正常。

关于amazon-web-services - Ansible 动态 list : Authentication error retrieving ec2 inventory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42442390/

相关文章:

c - 从文件读取数据以重新分配动态结构数组时出现段错误

Ansible 解析 stdout_lines 以验证特定项目的值

java - 无法在 DynamoDB 上设置独占启动键

sql-server - AWS RDS SQL Server 无法删除数据库

javascript - 如何将整个 SVG 图像文件夹(或如何动态加载它们)导入 React Web App?

Ansible设置mysql root密码

ssh - Ansible - 建立初始 SSH 连接

node.js - 在 AWS Lambda 中使用 node.js 连接视频

mysql - DynamoDB : Table Schema fot text searching

C++ 运行时动态内存大小