
AWS CLI solicita que "ec2 describe-instances" y "ec2 describe-iam-instance-profile-associations" incluyan el perfil de instancia en la propiedad "IamInstanceProfile".
Esto incluye ARN, por ejemplo:
arn:aws:iam::123:instance-profile/AmazonSSMRoleForInstancesQuickSetup
En tal caso, el último segmento, "AmazonSSMRoleForInstancesQuickSetup" en este ejemplo, es el nombre de la función de IAM. Esto también se sugiere en las respuestas a múltiples preguntas existentes:
- https://stackoverflow.com/questions/69002676/how-to-get-an-aws-roles-friendly-name-from-its-arn
- https://stackoverflow.com/questions/68347014/hay-una-manera-de-obtener-el-nombre-de-iam-role-adjunto-a-una-instancia-ec2-con-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
Pero a veces el ARN en el perfil de instancia tendrá este aspecto:
arn:aws:iam::123:instance-profile/eks-ab13cc88-bc13-13bc-acdc-1234567890ab
Y la última parte ya no es el nombre de un rol; en realidad, parece ser "Nombre del grupo de Auto Scaling". La interfaz web de AWS muestra la función de IAM asignada en ambos casos dentro de las propiedades de la instancia.
¿Cómo se podría obtener de manera confiable el nombre del rol para las instancias EC2 en todos los casos utilizando AWS CLI?
Respuesta1
Muchas gracias a @[correo electrónico protegido] - citando su respuesta aquí, se eliminará si publican ellos mismos.
El perfil de instancia EC2 es un contenedor que desempeña una función. De forma predeterminada, se creará un rol que coincida con el nombre del perfil, pero podrían ser diferentes.
Creo que necesitas obtener el nombre del perfil y usarlo para llamar aws iam get-instance-profile --instance-profile-name <value>
. En la respuesta que quieras 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