Cuando intento iniciar una instancia de Amazon Elastic Compute Cloud (Amazon EC2), recibo el siguiente error: «An error occurred (UnauthorizedOperation) when calling the RunInstances operation: You are not authorized to perform this operation. Encoded authorization failure message encoded-message».
Descripción corta
El error UnauthorizedOperation puede producirse cuando la política de AWS Identity and Access Management (IAM) es demasiado restrictiva. Este error también puede producirse cuando el usuario de IAM no tiene permisos para iniciar instancias de EC2. Para obtener más información sobre el error, utiliza la interfaz de la línea de comandos de AWS (AWS CLI) o AWS CloudShell para decodificar el mensaje codificado que aparece en el mensaje de error. El mensaje codificado tiene un aspecto similar al del ejemplo siguiente:
«Launch Failed - You are not authorized to perform this operation. Encoded authorization failure message: 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn»
Nota: Para decodificar el mensaje codificado, el usuario o rol de IAM debe tener permiso para realizar la operación de la API DecodeAuthorizationMesssage. Si el usuario o el rol no tienen el permiso, se producirá un error en la operación de decodificación y aparecerá el siguiente mensaje de error:
«Error: A client error (AccessDenied) occurred when calling the DecodeAuthorizationMessage operation: User: ### is not authorized to perform: (sts:DecodeAuthorizationMessage) action».
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Para decodificar el error del fallo de autorización, sigue estos pasos:
- Ejecuta el comando decode-authorization-message:
aws sts decode-authorization-message --encoded-message encoded-message-error
Nota: Sustituye encoded-message-error por el mensaje codificado que aparece en el mensaje de error.
Ejemplo de mensaje decodificado:
aws sts decode-authorization-message --encoded-message 4GIOHlTkIaWHQD0Q0m6XSnuUMCm-abcdefghijklmn-abcdefghijklmn-abcdefghijklmn{
"DecodedMessage":
{
"allowed
...
"context{\"principal\":{\"id\":\"ABCDEFGHIJKLMNO\",\"name\":\"AWS-User\",
\"arn\":\"arn:aws:iam::accountID:user/test-user\"},\"action\":\"iam:PassRole\",
\"resource\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\",\"conditions\":{\"items\":[{\"key\":\"aws:Region\",\"values\":{\"items\":[{\"value\":\"us-east-2\"}]}},
{\"key\":\"aws:Service\",\"values\":{\"items\":[{\"value\":\"ec2\"}]}},{\"key\":\"aws:Resource\",\"values\":{\"items\":[{\"value\":\"role/EC2_instance_Profile_role\"}]}},
{\"key\":\"iam:RoleName\",\"values\":{\"items\":[{\"value\":\"EC2_instance_Profile_role\"}]}},{\"key\":\"aws:Account\",\"values\":{\"items\":[{\"value\":\"accountID\"}]}},
{\"key\":\"aws:Type\",\"values\":{\"items\":[{\"value\":\"role\"}]}},{\"key\":\"aws:ARN\",\"values\":{\"items\":[{\"value\":\"arn:aws:iam::accountID:role/EC2_instance_Profile_role\"}]}}]}}}"
}
El mensaje decodificado enumera los permisos necesarios que faltan en el usuario o rol de IAM o en la política de usuario.
- Comprueba los campos entidad principal, acción, recurso, condición y clave del mensaje decodificado para obtener más información sobre la causa del error. El mensaje incluye la acción y el recurso solicitados, la entidad principal que hizo la solicitud y los valores clave de condición de la solicitud del usuario.
En el ejemplo anterior, la solicitud devolvió un error porque AWS-User no tiene permiso para realizar la acción iam:PassRole en el ARN arn:aws:iam::accountID:role/EC2_instance_Profile_role.
- Edita la política de IAM asociada al rol o usuario de IAM para agregar los permisos necesarios.
También puedes utilizar el simulador de política de IAM para solucionar problemas relacionados con las políticas basadas en la identidad y los límites de los permisos de IAM.
Información relacionada
¿Por qué no puedo ejecutar los comandos de la AWS CLI en mi instancia de EC2?
¿Por qué no puedo iniciar ni lanzar mi instancia de EC2?
Solución de problemas de mensajes de error de acceso denegado