
As solicitações da AWS CLI "ec2 descrevem instâncias" e "ec2 descrevem-iam-instance-profile-associations" incluem o perfil da instância na propriedade "IamInstanceProfile".
Isso inclui ARN, por exemplo:
arn:aws:iam::123:instance-profile/AmazonSSMRoleForInstancesQuickSetup
Nesse caso, o último segmento, "AmazonSSMRoleForInstancesQuickSetup" neste exemplo, é o nome da função do IAM. Isso também é sugerido em respostas a várias perguntas existentes:
- https://stackoverflow.com/questions/69002676/how-to-get-an-aws-roles-friendly-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-friendly-name-from-its-arn
Mas às vezes o ARN no perfil da instância ficará assim:
arn:aws:iam::123:instance-profile/eks-ab13cc88-bc13-13bc-acdc-1234567890ab
E a última parte não é mais um nome de função - na verdade, parece ser "Nome do grupo do Auto Scaling". A interface da web da AWS mostra a função IAM atribuída em ambos os casos dentro das propriedades da instância.
Como o nome da função poderia ser obtido de forma confiável para instâncias EC2 em todos os casos usando AWS CLI?
Responder1
Muito obrigado a @[e-mail protegido] - citando a resposta deles aqui, será excluído se eles próprios postarem.
O perfil da instância EC2 é um contêiner que possui uma função. Por padrão, será criada uma função que corresponda ao nome do perfil, mas podem ser diferentes.
Acho que você precisa pegar o nome do perfil e usá-lo para ligar aws iam get-instance-profile --instance-profile-name <value>
. Na resposta que você deseja 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