Rya*_*uck 12 amazon-web-services amazon-iam
我正在使用附加了IAM角色的EC2实例,并且希望能够验证我确实在AWS CLI中使用此角色.
我想象能够调用这样的东西(但在CLI文档中找不到类似的东西):
$ aws get-current-role-details
Run Code Online (Sandbox Code Playgroud)
这个功能是否存在?
Tyr*_*321 27
请参阅AWS STS命令 get-caller-identity
。
返回有关其凭据用于调用API的IAM身份的详细信息。
$ aws sts get-caller-identity
{
"Account": "0123456789",
"UserId": "AROAxxx:i-abc123",
"Arn": "arn:aws:sts::0123456789:assumed-role/EMR_EC2_DefaultRole/i-abc123"
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以获取角色名称,并向IAM查询角色详细信息。
$ aws iam list-attached-role-policies --role-name EMR_EC2_DefaultRole
{
"AttachedPolicies": [
{
"PolicyName": "AmazonElasticMapReduceforEC2Role",
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"
},
{
"PolicyName": "AmazonEC2RoleforDataPipelineRole",
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole"
}
]
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有一种简单的方法来获取这些信息.您需要通过以下路径到达目的地:
步骤1.从实例元数据中获取当前EC2实例ID.
curl -s http://169.254.169.254/latest/meta-data/instance-id
Run Code Online (Sandbox Code Playgroud)
您可能还需要当前区域.
curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/\(.*\)[a-z]/\1/'
Run Code Online (Sandbox Code Playgroud)
步骤2.获取附加到EC2实例的IAM实例配置文件的ID.
aws ec2 describe-instances \
--region us-east-1 \
--instance-id i-12345678 \
--query 'Reservations[0].Instances[0].IamInstanceProfile.Id'
Run Code Online (Sandbox Code Playgroud)
请记住根据需要替换EC2实例ID和区域.
步骤3.获取IAM实例配置文件角色.
aws iam list-instance-profiles \
--query "InstanceProfiles[?InstanceProfileId=='ABCDEFG'].Roles"
Run Code Online (Sandbox Code Playgroud)
请记住替换IAM实例配置文件ID.
笔记:
小智 5
有一种更简单,更优雅的方法来获取当前角色详细信息。
$ curl http://169.254.169.254/latest/meta-data/iam/info
{
"Code" : "Success",
"LastUpdated" : "2019-05-08T13:15:52Z",
"InstanceProfileArn" : "arn:aws:iam::xxxxxxxxxxxx:instance-profile/rolename",
"InstanceProfileId" : "AIPAIFNV5UU4JJLAXXXXX"
}
Run Code Online (Sandbox Code Playgroud)
在InstanceProfileArn中,您可以看到您的角色名称
归档时间: |
|
查看次数: |
7909 次 |
最近记录: |