Я использую настраиваемый авторизатор для моего сервера без приложения aws.
У меня есть пул cognito user.Рабочий процесс, который я пытаюсь выполнить:
- Клиент входит в пул cognito user
- Клиент получает токен
id_token
для будущих вызовов API - Пользователь нажимаетПОЛУЧИТЬ запрос на моей конечной точке API getUserInfo, передавая токен
- Лямбда-функция использует токен для проверки а) того, что пользователь вошел в систему, и б) что токен пользователя соответствует
user_name
, для которого информациязапрашивается
Насколько я понимаю, # 4 может быть достигнуто путем запроса объекта context
для атрибута authorizer.principalId
на основе этой документации aws.
Однако, когда я тестирую конечную точку, мой объект контекста в лямбда-выражении python не содержит этого свойства authorizer.
Дамп свойства для объекта context
из CloudWatch выглядит следующим образом:
{'aws_request_id': 'a37a1735-0ef3-*****-7fb1226218fe', 'log_group_name': '/aws/lambda/****', 'log_stream_name': '2019/01/03/[$LATEST]cca175ae1ff64cb699******', 'function_name': '*****getUser', 'memory_limit_in_mb': '1024', 'function_version': '$LATEST', 'invoked_function_arn': 'arn:aws:lambda:us-east-1:*********getUser', 'client_context': None, 'identity': <__main__.CognitoIdentity object at 0x7f1caf1bbdd8>}
Моя лямбда-Python имеет вид:
def getUser(event, context):
print(context)
print(context.__dict__)
print(context.authorizer)
print(context.identity.__dict__)
print(event.__dict__)
...
Как я могу заставить свою лямбду извлекать необходимую информацию, чтобы я мог проверить имя пользователя из входящего токена?