J'ai fait des progrès significatifs, mais je suis encore complètement perdue sur les principes de base.
Mon application utilise des pools d'utilisateurs Cognito pour créer et gérer les utilisateurs - ceux-ci sont identifiés sur S3, semble-t-il, par leur IdentityId. Chacun de mes utilisateurs a son propre dossier S3, et AWS leur donne automatiquement un nom de dossier qui est égal à l'IdentityId de l'utilisateur.
J'ai besoin de relier l'IdentityId aux autres informations de l'utilisateur Cognito, mais je n'arrive pas à trouver comment.
La chose essentielle dont j'ai besoin est d'être capable d'identifier le nom d'utilisateur et les autres attributs de l'utilisateur de Cognito pour un IdentityId donné - et c'est incroyablement difficile.
La première bataille a donc été de trouver comment obtenir l'IdentityId lorsqu'un utilisateur de Cognito fait une demande via la passerelle API AWS. Finalement, j'ai réussi à résoudre ce problème, et maintenant j'ai un utilisateur Cognito, qui fait une demande à la passerelle API, et ma fonction Lambda derrière cela a maintenant l'IdentityId. Cette partie fonctionne.
Mais je ne sais pas du tout comment accéder aux informations de l'utilisateur Cognito qui sont stockées dans le pool d'utilisateurs. Je ne trouve aucune information claire, et certainement aucun code, qui montre comment utiliser l'IdentityId pour obtenir les attributs de l'utilisateur Cognito, son nom d'utilisateur, etc.
Il semble que si j'utilise un "pool d'utilisateurs Cognito" pour autoriser ma méthode dans API Gateway, alors le modèle de mappage du corps peut être utilisé pour mettre les informations de l'utilisateur Cognito telles que le sous, le nom d'utilisateur et l'adresse électronique dans le contexte, MAIS je n'obtiens PAS l'IdentityId.
MAIS si j'utilise le AWS_IAM
pour autoriser ma méthode dans la passerelle API, le modèle de mappage du corps fait l'inverse - il me donne l'IdentityId mais pas les champs de l'utilisateur Cognito tels que sub, username et email.
Cela me rend fou - comment puis-je rassembler l'IdentityId et tous les champs et attributs des utilisateurs de Cognito dans une seule structure de données ? Le fait que je ne puisse obtenir que l'un ou l'autre n'a aucun sens.