Чтобы построить ответ Дилипа Колы.Похоже, что контекстные переменные, к которым вы пытаетесь получить доступ, не существуют для используемого вами метода авторизации.
Единственный способ получить информацию о токене для базовой службы Lambda - это передать весь токенвниз и откройте его в Lambda с соответствующей библиотекой для языка, который вы используете.
Вы можете передать токен, добавив строку в свой шаблон отображения тела.
{"Authorization" : "$input.params().header.get('Authorization')"}
A CognitoИдентификационный токен имеет вид JWT (JSON Web Token).Заявка ISS
имеет формат https://cognito-idp.{region}.amazonaws.com/{userPoolId}
.
Обновление - включение информации о группах пользователей
Маркер Cognito Identity не содержит группы пользователейпользователь, которому был выдан токен.
Чтобы ограничить доступ API для отдельных лиц в определенных группах пользователей, вам придется изменить метод аутентификации на AWS_IAM Authorizer с использованием федеративных идентификаторов Cognito.
использовать пользовательский атрибут, такой как роль в Cognito, помечая определенных пользователей как Admin, User и т. д. (как они могут быть переданы в токене id), а затем оценивать этот пользовательский атрибут.Если вы собираетесь пойти по этому пути, я бы перешел к методу аутентификации Custom Lambda Authorizer.Таким образом, вы можете проверять пользовательские атрибуты одновременно с проверкой токена, чтобы запросы никогда не доходили до бэкэнда, если у пользователя нет правильных прав доступа.