Совместное использование AWS идентификатора пользователя Cognito с RDS DB?

Я занимаюсь разработкой приложения ReactJS / PHP, основанного на сервисах AWS, и буду использовать Cognito для аутентификации. Тем не менее, я не понимаю, как использовать Cognito с моей собственной таблицей пользователей.

В качестве примера, допустим, у меня есть таблица в моей RDS, которая выглядит следующим образом:

id
review
creator_id

С Я бы будучи первичным ключом INT, обзор быть varchar и creator_id являющийся внешним ключом пользователя, который его создал.

Допустим, я хочу выполнить реляционный запрос, чтобы выбрать записи из таблицы комментариев, а также имя и имя человека, создавшего его с помощью внешнего ключа creator_id … в то время как пользователи, хранящиеся в моей базе данных Cognito, принадлежат мне, я могу Насколько я знаю, я не вижу «официального» способа синхронизации этих записей / таблиц пользователей с моей RDS.

В документации Cognito упоминается Лямбда-триггеры. Можно ли иметь мою собственную таблицу пользователей в моей RDS и использовать перенести пользователя триггер для передачи информации о пользователе Cognito в конечную точку PHP, которая создаст новую запись в таблице пользователей RDS с собственным PK, информацией о пользователе Cognito и «внешним ключом», идентифицирующим ее запись в пуле пользователей Cognito?

В качестве альтернативы, конечно, я мог бы иметь возможность контролировать все операции CRUD в пуле пользователей Cognito через AWS PHP SDK, и я мог бы предположить, что смогу обновить свою собственную таблицу, когда операция создания, обновления или удаления будет успешной. Согласно Cognito Docs. приложение может создать уникальное имя пользователя для пользователей в пуле, которое, как я полагаю, может быть использовано в качестве уникального идентификатора в моей таблице пользователей:

UPDATE users set this_field = 'whatever' WHERE cognito_id = 'whatever_the_unique_cognito_username_is'

Единственный потенциальный недостаток, который приходит на ум, это случай использования федеративной идентификации, и мои собственные записи пользователей устаревают из-за того, что мое приложение не получает изменения в данных атрибутов, которые были получены из Facebook, Amazon и т. Д.

Хотя это может показаться распространенным сценарием, я не могу найти какие-либо реальные проработанные примеры того, как решение этого достигается.

0

Решение

У меня была похожая ситуация, но не с RDS: у меня есть пользователи, которые хотят переместить их в Cognito, но есть и другая часть пользователей, на которую я хочу записать запись. Вот мое решение, я не знаю, хотите ли вы пойти по этому маршруту или нет (предположим, что p1 — это конечная точка Cognito, а p2 — это другая конечная точка, связанная с данными, например, RDS):

  1. Старые пользователи: Вместо использования CLI AWS я использовал Библиотека Boto3 AWS, написал скрипт для получения списка пользователей; и подтолкнуть их в p2 (Boto также поддерживает RDS-клиент). Теперь две вещи, одна из которых заключается в том, что вам нужно написать скрипт на Python, но его очень легко подобрать; и вызовы методов очень декларативны. Во-вторых, ты должен будь очень осторожен в том, что ты делаешь; если вы удалите что-то здесь; через плохо написанный код; Вы не можете повернуть его обратно. Поэтому я предлагаю создать фиктивный пул пользователей Cognito и базу данных и сначала протестировать их, а затем коснуться рабочего кода.

  2. Новые пользователи с этого момента: Как пользователь регистрируется; API добавить пользователя в p1 и добавить соответствующую информацию в p2. Какая связь между p1 и p2, является ли имя пользователя а не Я бы.

1

Другие решения

Других решений пока нет …