【发布时间】: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_id 和aws_secret_access_key
因此,当我查看我的 ~/.aws/credentials 文件时,即使今天运行 Ansible 文件,它也包含之前的一组凭据。
为什么会这样?还需要在相应的 IAM 配置文件中进行任何更改吗?
【问题讨论】:
标签: amazon-web-services amazon-ec2 ansible