У меня есть вопрос о том, что должно было быть чем-то действительно простым.
Нам нужно написать нашу Lambda в .Net Core (C#), которая использует ресурс шлюза API и пытается получить пользовательские переменные, созданные либо из пользовательского авторизатора, либо непосредственно из шаблона сопоставления тела, прикрепленного к ресурсу шлюза API (на запрос на интеграцию).
Проблема, с которой мы столкнулись, заключалась в том, что через node вы можете получить доступ к параметру «event», который будет содержать всю полезную нагрузку json, то есть вы можете получить свою новую пользовательскую переменную следующим образом:
event.requestContext.authorizer.customKey
или event.requestContext.context.customKey
.
Проблема в том, что нет способа получить эти переменные из кода C#, используя объект запроса [ APIGatewayProxyRequest
]. Я общался с некоторыми инженерами из AWS (у нас есть бизнес-план), которые подтвердили (после того, как 3 или 4 человека подключились), что нет очевидного или возможного способа получить всю эту полезную нагрузку от объекта запроса для опроса через C#. .
Это была проблема с нашим конкретным случаем, поскольку тогда мы не могли получить доступ к каким-либо пользовательским переменным, а это означало, что нам нужно изменить планы.
Я нахожу это действительно странным, как это может быть достижимо в узле, но не обслуживается в С#?
Вопрос о переполнении стека, который поможет с примером, можно найти здесь:
http://stackoverflow.com/questions/43990385/aws-lambda-c-sharp-accessing-custom-context
Можно ли это подтвердить?
@нормдж
Да, нам нужно расширить APIGatewayProxyRequest, чтобы получить доступ к пользовательскому авторизатору.
Обходной путь до тех пор заключается в том, чтобы ваша функция Lambda принимала System.IO.Stream вместо APIGatewayProxyRequest. Затем у вас есть доступ к исходному JSON, который вы можете разобрать самостоятельно. Вы можете получить необходимую информацию из этого JSON, а затем также десериализовать JSON в APIGatewayProxyRequest.
Закрытие заключается в том, что это дубликат https://github.com/aws/aws-lambda-dotnet/issues/98.
эта функция добавлена? если да, могу ли я получить ссылку на документацию по этому поводу?
Самый полезный комментарий
Да, нам нужно расширить APIGatewayProxyRequest, чтобы получить доступ к пользовательскому авторизатору.
Обходной путь до тех пор заключается в том, чтобы ваша функция Lambda принимала System.IO.Stream вместо APIGatewayProxyRequest. Затем у вас есть доступ к исходному JSON, который вы можете разобрать самостоятельно. Вы можете получить необходимую информацию из этого JSON, а затем также десериализовать JSON в APIGatewayProxyRequest.