¿Por qué se muestra el error de IAM «AWS no ha podido validar las credenciales de acceso proporcionadas» en algunas regiones de AWS?

3 minutos de lectura
0

He asumido un rol de AWS Identity and Access Management (IAM) y mi llamada a la API ha devuelto un error similar al siguiente: «Se ha producido un error (AuthFailure) al llamar a la operación DescribeInstances: AWS no ha podido validar las credenciales de acceso proporcionadas».

Breve descripción

AWS Security Token Service (AWS STS) admite una versión actualizada de los tokens de sesión, la versión 2. Las nuevas regiones de AWS (por ejemplo, Bahréin) no están habilitadas de forma predeterminada y solo aceptan la versión actualizada de los tokens de sesión. Este error puede producirse si se utilizan tokens de sesión de la versión 1 para realizar una solicitud a puntos de conexión del servicio que no están habilitados de forma predeterminada en una región de AWS. Para obtener más información, consulte Administración de AWS STS en una región de AWS.

Solución

Los tokens de sesión obtenidos del punto de conexión regional de AWS STS son de la versión 2 y, por lo tanto, válidos en todas las regiones de AWS. Se recomienda utilizar puntos de conexión de STS regionales. El uso de un punto de conexión que esté geográficamente más cerca de la aplicación reduce la latencia y proporciona mejores tiempos de respuesta.

Utilice uno de los métodos siguientes para solucionar este problema.

Obtención de tokens desde un punto de conexión regional

En el siguiente comando de ejemplo se utiliza AWS SDK para Python (Boto3).

Nota:

  • Sustituya your-region, AccountID y RoleName por los valores adecuados en su entorno.
  • Es obligatorio definir el valor de endpoint_url para poder configurar el cliente de STS para el punto de conexión regional.
# Replace existing code to create STS client with the following
sts_client = boto3.client('sts', region_name='your-region', endpoint_url='https://sts.your-region.amazonaws.com')

Incluya las opciones de URL de región y punto de conexión en el comando/script de Bash existente para poder utilizar puntos de conexión regionales.

aws sts assume-role --role-arn arn:aws:iam::AccountID:role/RoleName --role-session-name RoleName --region your-region --endpoint-url https://sts.your-region.amazonaws.com

Modificación de la compatibilidad regional de los tokens de sesión para un punto de conexión global

De forma predeterminada, las llamadas STS de AWS al punto de conexión global emiten tokens de sesión de la versión 1. Los tokens de la versión 1 solo son válidos en las regiones de AWS habilitadas de forma predeterminada. Sin embargo, también puede configurar el punto de conexión global de STS para que emita tokens de la versión 2 que se puedan usar en todas las regiones de AWS.

Consulte las instrucciones en Modificación de la compatibilidad regional de tokens de sesión para el punto de conexión global.

Importante: Los tokens de la versión 2 incluyen más caracteres que los de la versión 1. Esto podría afectar a los sistemas existentes en los que almacene tokens temporalmente.


Información relacionada

Ahora, AWS Security Token Service (STS) permite habilitar el punto de conexión de STS global para que emita tokens de sesión compatibles con todas las regiones de AWS

Regiones y puntos de conexión

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años