如何控制AWS EC2 IMDS返回的实例角色临时凭证过期时长?
问题
将角色附加至AWS EC2实例后,我通过以下命令从实例内部获取该角色的临时凭证:
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: ${TTL1}"` curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/InstanceProfileRole1
但无论我设置的${TTL1}值为多少,获取到的凭证中Expiration字段显示的过期时间始终为约6小时后。请问是否有办法控制IMDS返回的凭证过期时长?我查阅了AWS官方文档,但未找到相关说明。
回答
- 你搞混了两个完全独立的TTL配置:
X-aws-ec2-metadata-token-ttl-seconds控制的是访问元数据服务(IMDS)的令牌自身的有效期,比如你设置这个值为3600,代表这个令牌1小时内可以用来重复请求元数据,但这个令牌的有效期和角色凭证的过期时间没有任何关联。
- EC2实例通过实例配置文件获取的IAM角色临时凭证,默认有效期就是6小时,这个时长是AWS固定死的,无法通过IMDS的请求参数修改。不管你怎么调整令牌的TTL,返回的角色凭证过期时间都会保持6小时。
- 目前AWS没有提供自定义EC2实例角色凭证有效期的途径,官方文档里也明确了这一点——EC2实例角色的临时凭证有效期固定为6小时,无法更改。
内容的提问来源于stack exchange,提问作者areller
相关产品推荐
相关产品推荐

