amazon-web-services - 执行 playbook 以启动 ec2 实例时出错
问题描述
我有一个启动 ec2 实例的剧本。但是当我运行它时,我不断收到以下错误。
---
- name: Create an ec2 instance
hosts: localhost
gather_facts: false
vars:
region: us-east-1
instance_type: t2.micro
ami: ami-01ac7d9c1179d7b74
keypair: priyajdm
tasks:
- name: Create an ec2 instance
ec2:
key_name: "{{ keypair }}"
group: launch-wizard-31
instance_type: "{{ instance_type }}"
image: "{{ ami }}"
wait: true
region: "{{ region }}"
count: 1
vpc_subnet_id: subnet-02f498e16fd56c277
assign_public_ip: yes
register: ec2
错误:任务执行期间发生异常。要查看完整的回溯,请使用 -vvv。错误是:AuthFailure
AWS 无法验证提供的访问凭证cb70bd1a-b7ec-41aa-895a-fabf9e0b6cfe 致命:[localhost]:失败!=> {"changed": false, "module_stderr": "Traceback (last last last call):\n File \"/root/.ansible/tmp/ansible-tmp-1553599571.08-120541135236553/AnsiballZ_ec2.py\", line 113,在 \n _ansiballz_main()\n 文件 \"/root/.ansible/tmp/ansible-tmp-1553599571.08-120541135236553/AnsiballZ_ec2.py\",第 105 行,在 _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS) \n 文件 \"/root/.ansible/tmp/ansible-tmp-1553599571.08-120541135236553/AnsiballZ_ec2.py\",第 48 行,invoke_module\n imp.load_module(' main', mod, module, MOD_DESC)\n 文件 \"/tmp/ansible_ec2_payload_hXpgWw/ main .py\",第 1702 行,在 \n 文件 \"/tmp/ansible_ec2_payload_hXpgWw/ main .py\",第 1686 行,在 main\ n 文件 \"/tmp/ansible_ec2_payload_hXpgWw/ main .py\",第 989 行,在 create_instances\n 文件 \"/home/ubuntu/.local/lib/python2.7/site-packages/boto/vpc/ init .py \",第 1152 行,在 get_all_subnets\n return self.get_list('DescribeSubnets', params, [('item', Subnet)])\n File \"/home/ubuntu/.local/lib/python2.7/ site-packages/boto/connection.py\",第 1186 行,在 get_list\n raise self.ResponseError(response.status, response.reason, body)\nboto.exception.EC2ResponseError: EC2ResponseError: 401 Unauthorized\n\nAuthFailure
AWS 无法验证提供的访问凭证cb70bd1a-b7ec-41aa-895a-fabf9e0b6cfe\n", "module_stdout": "", "msg": "MODULE FAILURE\n请参阅 stdout/stderr 了解确切的错误", "rc" : 1}
解决方案
您将 AWS 凭证保存在哪里?您有 3 个选项:
- 使用boto配置文件
- 设置所需的环境变量
- 在您的任务中设置 EC2 模块 AWS 凭证参数
最后一个选项是解决身份验证问题的最糟糕但最简单的方法。
检查EC2 模块的注释。
推荐阅读
- python - 如何从 PSUTIL 打印命名元组的内容
- python-3.x - Flask RadioField 不能以 POST 形式工作
- javascript - 有没有办法给名称对象?
- c - 是否可以区分反编译代码和手写代码?
- c++ - 如何重新分配三重指针
- api - 何时使用 RestRequest/RestResponse,何时使用 HttpResuest/HttpResponse?
- python - 未调用 Python 函数。只能打印我的打印语句中的问题
- django - Django 在退出视图或导航到与当前 URL 不同的 URL 时运行函数
- c - 查找数组中的哪些值至少出现 x 次
- d3.js - 在 D3 中可视化来自不同 csv 文件的数据