Soy nuevo en AWS tratando de entender los conceptos, cuál es la diferencia entre el rol de IAM y STS CUÁNDO UTILIZAR QUÉ SERVICIO de la aplicación. ¿Alguien puede explicarme?
Para decirlo en términos simples, el rol de IAM es un documento , definición de quién (su aplicación, servicio de AWS, etc.) puede usar qué (lista de llamadas API) bajo qué condiciones (lista de condiciones específicas del servicio, opcional). Los roles son administrados por el servicio IAM .
STS es un servicio de AWS que se utiliza para obtener credenciales temporales. Si desea asumir el rol, solicite estas credenciales a través del servicio STS. Si su aplicación tiene permisos para asumir el rol, el servicio IAM le otorgará los permisos (lista de llamadas API) que permite este rol y el servicio STS le devolverá sus credenciales.
Ahora, "cuándo usar cuál" no es una pregunta del todo correcta, dada la explicación anterior. Pero entiendo de dónde sacaste la idea, y en mi opinión sería una mejor pregunta: "Cuándo usar el servicio STS para asumir el rol y cuándo no".
La respuesta a eso sería, como regla general, si su aplicación se ejecuta en AWS (EC2, Elastic Beanstalk, Lambda, etc.), use roles directamente, es decir, adjunte roles a una instancia. Si su aplicación utiliza AWS SDK para cualquier idioma, lo recogerá sin problemas.
Una excepción a esto sería si desea realizar algunas acciones en una cuenta completamente diferente. Luego, debe usar el servicio STS directamente para asumir el rol en una cuenta diferente.
Si su carga útil se ejecuta fuera de AWS, use STS.