使用过期凭据的EC2实例配置文件

时间:2018-01-10 09:15:10

标签: amazon-web-services amazon-ec2 ansible

这是设置:

有一个Master-Worker架构,通过Ansible从Master内部进行编排。创建Workers的代码如下:

- name: Provisioning Spot instaces
  ec2:
    assign_public_ip: no
    spot_price: "{{ ondemand4_price }}"
    spot_wait_timeout: 300
    assign_public_ip: no
    aws_access_key: "{{ assumed_role.sts_creds.access_key }}"
    aws_secret_key: "{{ assumed_role.sts_creds.secret_key }}"
    security_token: "{{ assumed_role.sts_creds.session_token }}"
    region: "{{ aws_region }}"
    image: "{{ image_instance }}"
    instance_type: "{{ large_instance }}"
    key_name: "{{ ssh_keyname }}"
    count: "{{ ninstances }}"
    state: present
    group_id: "{{ priv_sg }}"
    vpc_subnet_id: "{{ subnet_id }}"
    instance_profile_name: 'ML-Ansible'
    wait: true
    instance_tags:
      Name: Worker
    #delete_on_termination: yes
  register: ec2
  ignore_errors: True

因此,使用配置文件名称(/ role)创建了Worker实例' ML-Ansible'其中包含所有必要的权限。

但是,在尝试执行AWS shell命令(aws cloudwatch put-metric-data ...)时,它会返回以下错误:

"stderr": "\nAn error occurred (InvalidClientTokenId) when calling the PutMetricData operation: The security token included in the request is invalid.",

我们最近轮换了所有凭据。因此,我们有一套新的aws_access_key_idaws_secret_access_key

因此,当我查看我的~/.aws/credentials文件时,即使今天运行Ansible文件,它也包含上一组凭据。

为什么会这样?还需要在相应的IAM配置文件中进行任何更改吗?

1 个答案:

答案 0 :(得分:1)

如果您拥有~/.aws/credentials的凭据,那么很可能是在创建AMI之前将它们放在那里,现在它们被用于启动工作人员的AMI。

如果您使用自己的AMI(而不是AWS提供的AMI),请在删除凭据后尝试重新创建它。