Beim Bereitstellen einer Golang/Docker-basierten HTTP-API für AWS Lambda kann ein Problem auftreten, bei dem die Pfadeigenschaft in APIGatewayProxyRequest leer ist. Dies liegt daran, dass die Lambda-Funktion Ereignisse von der API Gateway HTTP API (v2) empfängt, die im Vergleich zur REST API (v1) eine andere Ereignisstruktur verwendet.
Das Problem
APIGatewayProxyRequest ist für die ältere REST-API konzipiert und führt bei Verwendung mit der HTTP-API zu einem leeren Pfadfeld. Die Lösung besteht darin, die richtige Ereignisstruktur zu verwenden: APIGatewayV2HTTPRequest.
Die Lösung
Wechseln Sie zur Verwendung der APIGatewayV2HTTPRequest-Struktur, die das RawPath-Feld enthält, um das Routing korrekt zu verarbeiten.
Der Originalcode aus ihrer Dokumentation (der nicht funktioniert):
package main import ( "context" "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(ctx context.Context, event events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { response := events.APIGatewayProxyResponse{ StatusCode: 200, Body: "\"Hello from Lambda!\"", } return response, nil } func main() { lambda.Start(handler) }
Hier ist ein aktualisiertes Lambda-Funktionsbeispiel:
package main import ( "github.com/aws/aws-lambda-go/events" "github.com/aws/aws-lambda-go/lambda" ) func handler(request events.APIGatewayV2HTTPRequest) (*events.APIGatewayV2HTTPResponse, error) { if request.RawPath == "/health" { return &events.APIGatewayV2HTTPResponse{ StatusCode: 200, Body: "Health check passed", }, nil } return &events.APIGatewayV2HTTPResponse{ StatusCode: 404, Body: "Not Found", }, nil } func main() { lambda.Start(handler) }
Bereitstellen Ihres Lambda
Fazit
Der Wechsel zu APIGatewayV2HTTPRequest behebt das Problem eines leeren Pfads in Ihrer Lambda-Funktion, wenn Sie die API Gateway HTTP API (v2) verwenden. Testen Sie unbedingt Ihren Endpunkt, um sicherzustellen, dass das Pfadrouting wie erwartet funktioniert.
Quelle: Github Issue:
https://github.com/aws/aws-lambda-go/issues/60
Das obige ist der detaillierte Inhalt vonLösen des Problems mit leeren Pfaden in Go-Lambda-Funktionen mit der API Gateway-HTTP-API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!