2
votes

Meilleur moyen de synchroniser RDS DB et Cognito

Je suis assez nouveau dans tous les AWS Tools BTW. Quoi qu'il en soit, j'ai déjà créé le groupe d'utilisateurs Cognito et je peux créer et ouvrir une session de nouveaux utilisateurs, mais j'ai également besoin de ces champs dans ma base de données RDS.

Hier, je lisais des documents et des didacticiels sur le problème, mais il semble qu'il existe de nombreuses façons de synchroniser deux sources de données. Je ne sais pas si quelque chose comme AppSync a les options pour le faire ou je dois écrire un lambda en deux étapes, donc je cherche des conseils pour les utilisateurs plus expérimentés comme vous.


1 commentaires

Je pense que vous devriez envisager Déclencheurs Lambda , en particulier "après confirmation" et "après authentification" en fonction de vos besoins. Vous pouvez implémenter l'un des déclencheurs Lambda pour écrire les champs utilisateur requis dans la base de données RDS.


3 Réponses :


2
votes

Vous ne pouvez avoir que les attributs de base requis pour l'authentification dans le pool d'utilisateurs cognito tels que le nom d'utilisateur, le nom, l'adresse e-mail et le numéro de téléphone et le reste des métadonnées dans une autre base de données telle que RDS ou DynamoDB.
Dans dynamo ou RDS, vous pouvez créer un mappage un à un du nom d'utilisateur dans cognito et du reste des métadonnées. Comme par exemple:

*username* -> pk
employee_id
address
user_type
first_name
last_name
marital_status
gender

Du point de vue de la mise en œuvre:
Exposez lambda pour créer et mettre à jour un utilisateur. Créez un utilisateur dans cognito en utilisant uniquement les attributs requis précédemment définis à l'aide des API cognito, puis insérez les métadonnées de cet utilisateur dans la base de données de votre choix. Il en va de même pour votre API PUT avec un léger changement que vous devrez mettre à jour le pool d'utilisateurs et les métadonnées des utilisateurs dans la base de données.


0 commentaires

1
votes

Vous pouvez utiliser des résolveurs AWS AppSync Lambda associés à des groupes d'utilisateurs Cognito comme choix AuthZ pour une API AppSync afin de répondre à votre cas d'utilisation. Essentiellement, lorsque l'utilisateur termine l'authentification avec cognito, vous aurez le '$ context.identity.claims' qui contient les attributs utilisateur, et à l'intérieur de votre résolveur lambda, vous pouvez écrire dans votre base de données RDS.

Quelques documents de référence:


0 commentaires

1
votes

Réponse courte:

Vous pouvez répliquer les données du pool d'utilisateurs Cognito dans une table SQL en écoutant les événements Cognito (à l'aide d'AWS Lambda, par exemple).

Réponse longue:

Je pense que vous pouvez avoir des groupes d'utilisateurs Cognito comme données d'authentification / utilisateur Contexte borné , dans en d'autres termes, une seule source de vérité pour l'authentification et les données utilisateur.

Et les autres BC qui ont besoin de données utilisateur (par exemple, le contexte de vente) peuvent utiliser une sorte d'architecture de réplication de données pour synchroniser les données utilisateur en lecture seule, pour des requêtes internes complexes ou simplement pour se dissocier de Cognito.

Un exemple de réplication de données dans ce cas pourrait être l'écoute des événements Cognito (AWS Lambda peut vous aider) pour répliquer les données utilisateur dans un contexte borné (uniquement la partie des données dont vous avez besoin pour ce contexte).

Mais n'oubliez pas que les données répliquées sont en lecture seule, les données originales de Cognito doivent être la seule source de vérité.


0 commentaires