【问题标题】:EC2 Instance profiles using expired credentials使用过期凭证的 EC2 实例配置文件
【发布时间】:2018-01-10 09:15:09
【问题描述】:

这是设置:

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

因此,Worker 实例是使用包含所有必要权限的配置文件名称 (/role) '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 配置文件中进行任何更改吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-01
      • 2017-10-03
      • 2016-12-07
      相关资源
      最近更新 更多