
AWS CLI 請求「ec2describe-instances」和「ec2describe-iam-instance-profile-associations」在「IamInstanceProfile」屬性中包含實例設定檔。
這包括 ARN,例如:
arn:aws:iam::123:instance-profile/AmazonSSMRoleForInstancesQuickSetup
在這種情況下,最後一段(本範例中的「AmazonSSMRoleForInstancesQuickSetup」)是 IAM 角色名稱。對多個現有問題的回答也建議了這一點:
- https://stackoverflow.com/questions/69002676/how-to-get-an-aws-roles-friend-name-from-its-arn
- https://stackoverflow.com/questions/68347014/is-there-a-way-to-get-name-of-iam-role-attached-to-an-ec2-instance-with-boto3
- https://stackoverflow.com/questions/70307973/how-to-get-arn-of-an-iam-role
- https://stackoverflow.com/questions/69002676/how-to-get-an-aws-roles-friend-name-from-its-arn
但有時實例設定檔中的 ARN 會如下所示:
arn:aws:iam::123:instance-profile/eks-ab13cc88-bc13-13bc-acdc-1234567890ab
最後一部分不再是角色名稱 - 實際上,它似乎是“Auto Scaling Group name”。 AWS Web 介面確實在實例屬性中顯示了這兩種情況下指派的 IAM 角色。
如何使用 AWS CLI 在所有情況下可靠地取得 EC2 執行個體的角色名稱?
答案1
非常感謝@[電子郵件受保護] - 在這裡引用他們的回复,如果他們自己發布,將被刪除。
EC2 執行個體設定檔是一個擁有角色的容器。預設情況下,將建立與設定檔名稱相符的角色,但它們可能不同。
我認為您需要獲取配置文件名稱並使用它來調用aws iam get-instance-profile --instance-profile-name <value>
.在你想要的回應中InstanceProfile.Roles[].RoleArn
。
https://docs.aws.amazon.com/cli/latest/reference/iam/get-instance-profile.html https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html