Historia:
Tengo un grupo de usuarios de Cognito con usuarios.
Este grupo de usuarios es un proveedor de autenticación en un grupo de identidades federadas.
Tengo un depósito S3 donde los usuarios están limitados a cargar a una ruta privada a través de una política en el rol de autenticación de la siguiente manera:
arn:aws:s3:::BUCKET_NAME/${cognito-identity.amazonaws.com:sub}/*
Los usuarios cargan directamente desde el navegador web a través de aws javascript sdk.
Ahora esto funciona muy bien y mis usuarios están limitados a dónde cargan. Los archivos que cargan terminan con rutas en el cubo que se ven así:
us-east-1:0f26319c-1233-4c71-afb6-fac96a798ffb/random_file_name.txt
Luego tengo una lambda que se activa desde este depósito S3 cada vez que se agrega un archivo. Para aclarar, el usuario NO invoca la lambda
Problema:
Me gustaría acceder a los atributos del usuario en el grupo de usuarios de lamda. Pensé que podría hacer esta búsqueda usando el sub cognito-identity. Sin embargo, parece que no puedo encontrar una manera de usar las API de SDK para permitir esto.
Usando esta API: http://boto3.readthedocs.io/en/latest/reference/services/cognito-identity.html#CognitoIdentity.Client.describe_identity Puedo obtener el inicio de sesión/el grupo de usuarios pero no el nombre de usuario asociado con esta identificación de identidad.
Si tuviera el nombre de usuario, podría usar la API: http://boto3.readthedocs.io/en/latest/reference/services/cognito-idp.html?highlight=cognito#CognitoIdentityProvider.Client.admin_get_user
¿Alguna idea de cómo puedo usar el ID de identidad federada para buscar los atributos del usuario?
Desafortunadamente, no creo que esto sea posible. La razón es que, según tengo entendido, técnicamente la ID de identidad federada no tiene que representar a un usuario del grupo de usuarios. Si conectó otros proveedores de autenticación al grupo de identidades, los usuarios podrían tener propiedades completamente diferentes, por ejemplo.
¿Qué pasa con el almacenamiento de archivos en
arn:aws:s3:::BUCKET_NAME/${cognito-idp.us-east-1.amazonaws.com:sub}
Esto se resolverá en los nombres de las carpetas como
f4cfd4a8-0e94-4287-8c5e-1b01538dd2a1
Usando este sub de usuario de Cognito User Pool , puede enumerar usuarios con ese sub , por ejemplo en cli:
aws cognito-idp list-users --user-pool-id=us-east-1_ndhjGJQYE --filter "sub = 'f4cfd4a8-0e94-4287-8c5e-example'"