首页 > 解决方案 > 执行 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。错误是:AuthFailureAWS 无法验证提供的访问凭证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\nAuthFailureAWS 无法验证提供的访问凭证cb70bd1a-b7ec-41aa-895a-fabf9e0b6cfe\n", "module_stdout": "", "msg": "MODULE FAILURE\n请参阅 stdout/stderr 了解确切的错误", "rc" : 1}

标签: amazon-web-servicesansible

解决方案


您将 AWS 凭证保存在哪里?您有 3 个选项:

  1. 使用boto配置文件
  2. 设置所需的环境变量
  3. 在您的任务中设置 EC2 模块 AWS 凭证参数

最后一个选项是解决身份验证问题的最糟糕但最简单的方法。

检查EC2 模块的注释。


推荐阅读