ОК. Сейчас я занимаюсь этим и добился значительного прогресса, но я все еще полностью озадачен фундаментальными принципами.
Мое приложение использует Cognito User Pools для создания и управления пользователями - они идентифицированы на S3, кажется, их IdentityId. Каждый из моих пользователей имеет свою собственную папку S3, и AWS автоматически дает им имя папки, которое равно идентификатору пользователя IdentityId.
Мне нужно связать IdentityId с другой информацией пользователя Cognito, но не могу понять, как это сделать.
Ключевая вещь, которая мне нужна, - это определить имя пользователя и другие атрибуты пользователя cognito для данного IdentityId - и это безумно сложно.
Итак, первая битва заключалась в том, чтобы выяснить, как получить IdentityId, когда пользователь Cognito выполняет запрос через AWS API Gateway. Наконец, я получил это, и теперь у меня есть пользователь Cognito, который выполняет запрос к Gateway API, а моя функция Lambda позади этого теперь имеет IdentityId. Этот бит работает.
Но я полностью зациклен на том, как теперь получить доступ к информации пользователя Cognito, которая хранится в пуле пользователей. Я не могу найти никакой четкой информации и, конечно, никакого кода, который показывает, как использовать IdentityId для получения пользовательских атрибутов Cognito, имени пользователя и т.д.
Похоже, что если я использую "пул пользователей Cognito" для авторизации моего метода в шлюзе API, то шаблон сопоставления тела можно использовать для размещения информации пользователя Cognito User, такой как sub и имя пользователя и адрес электронной почты, в контексте, НО Я НЕ получаю IdentityId.
НО, если я использую AWS_IAM для авторизации моего метода в шлюзе API, тогда шаблон отображения тела обратный - он дает мне IdentityId, но не поля пользователя Cognito, такие как имя суб и имя пользователя и адрес электронной почты.
Это сводит меня с ума - как я могу получить IdentityId и все поля и атрибуты пользователей Cognito вместе в одну структуру данных? Тот факт, что я, кажется, только могу получить тот или другой, просто не имеет смысла.