使用Ansible ec2_ami模块时遇WaiterConfig未知参数报错求助
解决Ansible ec2_ami模块的WaiterConfig未知参数报错
这个报错的核心原因是Ansible的ec2_ami模块与底层依赖的boto3/botocore版本不兼容——模块在尝试调用AWS的等待器(waiter)时,传递了当前boto3版本不支持的WaiterConfig参数格式,导致抛出异常。下面是几个可行的解决办法:
1. 显式指定wait_timeout参数
在ec2_ami任务中添加wait_timeout参数,明确设置AMI创建的等待超时时间,这样可以绕过模块自动生成的有问题的WaiterConfig逻辑。示例调整后的任务:
- name: Create AMI ec2_ami: region: "{{ region }}" instance_id: "{{ instanceId }}" name: "{{ asg_name }}-{{ ansible_date_time.iso8601 | regex_replace('[^a-zA-Z0-9]', '-') }}" wait: yes wait_timeout: 3600 # 设置为1小时,可根据你的实例大小调整 state: present register: ami
2. 升级boto3和botocore到兼容版本
较旧的boto3版本不支持模块传递的WaiterConfig参数结构,直接升级到最新稳定版即可解决:
# 使用pip升级(确保是Ansible使用的Python环境) pip install --upgrade boto3 botocore
如果你用的是虚拟环境,记得先激活环境再执行命令。
3. 同步升级Ansible版本
如果你的Ansible版本过于老旧(比如2.8及更早),可能存在模块与新版boto3不兼容的情况,建议升级到最新的稳定版:
# 以pip安装为例 pip install --upgrade ansible
如果是通过系统包管理器安装的Ansible,比如Ubuntu的apt或者CentOS的yum,替换为对应包管理器的升级命令即可。
内容的提问来源于stack exchange,提问作者mab
相关产品推荐
相关产品推荐

