Получить имя роли AWS из списка экземпляров EC2 с помощью CLI

Получить имя роли AWS из списка экземпляров EC2 с помощью CLI

Запросы AWS CLI «ec2 describe-instances» и «ec2 describe-iam-instance-profile-associations» включают профиль экземпляра в свойство «IamInstanceProfile».

Сюда входят ARN, например:

arn:aws:iam::123:instance-profile/AmazonSSMRoleForInstancesQuickSetup

В таком случае последний сегмент, "AmazonSSMRoleForInstancesQuickSetup" в этом примере, является именем роли IAM. Это также предлагается в ответах на несколько существующих вопросов:

Но иногда ARN в профиле экземпляра будет выглядеть так:

arn:aws:iam::123:instance-profile/eks-ab13cc88-bc13-13bc-acdc-1234567890ab

И последняя часть больше не является именем роли - на самом деле, это, похоже, "Имя группы автоматического масштабирования". Веб-интерфейс AWS отображает назначенную роль IAM в обоих случаях внутри свойств экземпляра.

Как можно надежно получить имя роли для экземпляров EC2 во всех случаях с использованием AWS CLI?

решение1

Большое спасибо @[email protected] - цитирую их ответ здесь, удалю, если они опубликуют себя.

Профиль экземпляра 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

Связанный контент