У меня есть веб-сайт, который использует AWS Cognito (через Amplify) для входа в систему. API находится в отдельном стеке, который развертывается с помощью Serverless.
Я пытаюсь создать конечную точку API, которая может получить доступ к данным пула Cognito User Pool текущего пользователя (имя пользователя, адрес электронной почты) , если оно доступно . Единственный способ добиться этого - использовать авторизатор пула пользователей cognito через API Gateway.
Пример:
functions:
getMe:
handler: /endpoints/myService.get
events:
- http:
path: /myService
method: GET
cors: true
authorizer:
type: COGNITO_USER_POOLS
authorizerId: ${self:custom.apiGatewayAuthorizerId.${self:custom.stage}}
Где для authorizerId задан 6-значный идентификатор авторизатора, найденный на странице авторизаторов API шлюза консоли AWS. Однако этот блокирует весь трафик c, который не аутентифицирован с помощью Cognito . Это не то, чего я хочу, так как у меня есть ряд служб, которые должны быть доступны как анонимным, так и зарегистрированным пользователям. Я просто хочу персонализировать данные для пользователей, которые вошли в систему.
Есть ли способ разрешить traffi c и передавать параметры пользователя Cognito через шлюз API в Lambda , если они доступны? ?
Все ресурсы, которые я смог найти в отношении Cognito + API Gateway + Lambda, конкретно касаются ограничения доступа к конечным точкам и не наложения данных на запросы ...