EC2实例与AWS CLI的IAM角色使用差异及配置疑问
让本地AWS CLI使用EC2实例的Test-Role-Ec2角色
首先明确:EC2实例的角色凭证是通过实例元数据服务自动获取的,和你本地AWS CLI使用的个人账户凭证完全独立——导入实例SSH密钥仅用于远程连接EC2,并不会自动让本地CLI关联实例的角色。要让本地CLI使用Test-Role-Ec2角色,有两种常用方法:
方法一:临时获取角色凭证(单次生效)
执行以下命令扮演Test-Role-Ec2角色,获取临时凭证:
aws sts assume-role --role-arn arn:aws:iam::739214605182:role/Test-Role-Ec2 --role-session-name cli-test-session
命令会返回包含AccessKeyId、SecretAccessKey、SessionToken的JSON结果,接着在本地终端设置环境变量:
export AWS_ACCESS_KEY_ID="返回的AccessKeyId值" export AWS_SECRET_ACCESS_KEY="返回的SecretAccessKey值" export AWS_SESSION_TOKEN="返回的SessionToken值"
此时再执行aws sts get-caller-identity,就能看到CLI使用的是Test-Role-Ec2角色了。
方法二:配置CLI永久切换角色(持久生效)
编辑AWS CLI的配置文件(路径通常为~/.aws/config),添加一个新的profile:
[profile test-ec2-role] role_arn = arn:aws:iam::739214605182:role/Test-Role-Ec2 source_profile = default # 替换为你本地当前使用的CLI profile名称,比如default role_session_name = cli-test-session
之后你可以通过指定profile来使用该角色:
aws sts get-caller-identity --profile test-ec2-role
或者设置环境变量默认使用这个profile:
export AWS_PROFILE=test-ec2-role
注意事项
- 你的本地IAM用户必须具备
sts:AssumeRole权限,且权限策略中明确允许扮演Test-Role-Ec2角色。 - Test-Role-Ec2角色的信任策略需要配置为允许你的IAM用户(或所在AWS账户)来扮演它。
内容的提问来源于stack exchange,提问作者JohnC
相关产品推荐
相关产品推荐

