[Получено от AWS ApiGateway Lambda Proxy Access Authorizer ]
Я использую Lambda Proxy и Cognito User Pool Authorizer в моем ApiGateway.С помощью функций node.js Lambda можно получить доступ к авторизатору (в основном, получить идентификатор пользователя, адрес электронной почты и прочее) в event.requestContext.authorizer.claims
.
Но в Python, нет такого объекта .Изучение объекта event
и объекта context
показывает, что нет ничего подобного requestContext
или authorizer
, просто объект identity
, который содержит информацию Cognito Federated Identities: для меня это просто null
.
Я не видел упоминаний о event.requestContext.authorizr.claims
в функциях Python AWS-Lambda, и было бы больно
- использовать федеративные удостоверения вместо
- в API Gatewayустановите Авторизацию на
AWS_IAM
и включите Invoke with caller credential
- отбросьте интеграцию прокси для пользовательской интеграции или
- напишите лямбда-выражения с node.js вместо python
Есть ли у вас какие-либо идеи, если я что-то упустил, если это не реализовано в AWS, есть ли простой обходной путь или что-то еще?
Большое спасибо за вашу помощь!
Вот объект контекста в функции python aws-lambda в форме словаря:
"aws_request_id":"99XXXXf5-6XXe-1XX8-bXXf-5dXXXXXXXX50",
"function_name":"test_DynamoDB",
"function_version":"$LATEST",
"invoked_function_arn":"arn:aws:lambda:eu-west-3:4XXXXXXXXXX0:function:test_DynamoDB",
"log":"<bound method LambdaContext.log of <__main__.LambdaContext object at 0x7f07bcb21da0>>",
"log_group_name":"/aws/lambda/test_DynamoDB",
"log_stream_name":"2018/06/13/[$LATEST]76XXXXXXXXXXXXXXXXXXXXXXXXXXXXf0",
"memory_limit_in_mb":"128",
"identity":{
"cognito_identity_id":null,
"cognito_identity_pool_id":null
},
"client_context": None
Обновление
С https://stackoverflow.com/a/44039371/9936457, похожета же проблема была в лямбда-функциях C #, и есть обходной путь дляэто, используя System.IO.Streams.Будет ли это решение работать в Python с правильным синтаксисом?