Aws-lambda-dotnet: Nutzlast für Lambda, vom APIGatewayProxyRequest-Objekt (funktioniert im Knoten)

Erstellt am 18. Mai 2017  ·  3Kommentare  ·  Quelle: aws/aws-lambda-dotnet

Ich habe eine Frage, was etwas wirklich Einfaches hätte sein sollen.

Wir müssen unser Lambda in .Net Core (C#) schreiben, das eine API-Gateway-Ressource verwendet, und versuchten, benutzerdefinierte Variablen abzurufen, die entweder vom benutzerdefinierten Autorisierer oder direkt aus der Body-Mapping-Vorlage erstellt wurden, die an die API-Gateway-Ressource angehängt ist (on die Integrationsanfrage).

Das Problem, auf das wir gestoßen sind, war, dass Sie über den Knoten auf den Parameter 'event' zugreifen können, der die gesamte Json-Nutzlast enthält, was bedeutet, dass Sie Ihre neue benutzerdefinierte Variable wie folgt erhalten können:
event.requestContext.authorizer.customKey oder event.requestContext.context.customKey .

Das Problem besteht darin, dass es keine Möglichkeit gibt, diese Variablen aus dem C#-Code mit dem Request-Objekt [ APIGatewayProxyRequest ] abzurufen. Ich habe mit einigen Ingenieuren von AWS gechattet (wir haben einen Geschäftsplan), die bestätigt haben (nachdem 3 oder 4 Personen beteiligt waren), dass es keine offensichtliche oder mögliche Möglichkeit gibt, diese gesamte Nutzlast aus dem Anfrageobjekt zur Abfrage über C# abzurufen. .

Dies war in unserem speziellen Fall ein Problem, da wir dann nicht auf die benutzerdefinierten Variablen zugreifen konnten, was bedeutet, dass wir Pläne ändern müssen.

Ich finde es wirklich seltsam, wie es innerhalb von Knoten erreichbar sein kann, aber in C# nicht berücksichtigt wird?

Eine Stack Overflow-Frage, die bei einem Beispiel helfen würde, findet sich hier:
http://stackoverflow.com/questions/43990385/aws-lambda-c-sharp-accessing-custom-context

Kann dies bestätigt werden?

@normj

feature-request

Hilfreichster Kommentar

Ja, wir müssen APIGatewayProxyRequest erweitern, um Zugriff auf den benutzerdefinierten Autorisierer zu erhalten.

Ein Workaround bis dahin besteht darin, dass Ihre Lambda-Funktion einen System.IO.Stream anstelle von APIGatewayProxyRequest übernimmt. Dann haben Sie Zugriff auf das ursprüngliche JSON, das Sie selbst parsen können. Sie können die benötigten Informationen aus diesem JSON abrufen und dann auch JSON zu APIGatewayProxyRequest deserialisieren.

Alle 3 Kommentare

Ja, wir müssen APIGatewayProxyRequest erweitern, um Zugriff auf den benutzerdefinierten Autorisierer zu erhalten.

Ein Workaround bis dahin besteht darin, dass Ihre Lambda-Funktion einen System.IO.Stream anstelle von APIGatewayProxyRequest übernimmt. Dann haben Sie Zugriff auf das ursprüngliche JSON, das Sie selbst parsen können. Sie können die benötigten Informationen aus diesem JSON abrufen und dann auch JSON zu APIGatewayProxyRequest deserialisieren.

Zum Schluss ist dies ein Duplikat von https://github.com/aws/aws-lambda-dotnet/issues/98

wurde diese Funktion hinzugefügt? Wenn ja, könnte ich einen Link zu einer Dokumentation dazu bekommen?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen