Maison > développement back-end > Golang > Résoudre le problème du chemin vide dans les fonctions Go Lambda avec l'API HTTP API Gateway

Résoudre le problème du chemin vide dans les fonctions Go Lambda avec l'API HTTP API Gateway

Patricia Arquette
Libérer: 2024-12-26 08:49:09
original
944 Les gens l'ont consulté

Solving the Empty Path Issue in Go Lambda Functions with API Gateway HTTP API

Lors du déploiement d'une API HTTP basée sur Golang/Docker sur AWS Lambda, vous pouvez rencontrer un problème où la propriété path dans APIGatewayProxyRequest est vide. Cela se produit car la fonction Lambda reçoit des événements de l'API HTTP API Gateway (v2), qui utilise une structure d'événements différente de celle de l'API REST (v1).

Le problème

APIGatewayProxyRequest est conçu pour l'ancienne API REST et entraînera un champ de chemin vide lorsqu'il est utilisé avec l'API HTTP. La solution consiste à utiliser la structure d'événement correcte : APIGatewayV2HTTPRequest.

La solution

Utilisez la structure APIGatewayV2HTTPRequest, qui inclut le champ RawPath pour gérer correctement le routage.

Le code original issu de leur documentation (qui ne fonctionne pas) :

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)
}
Copier après la connexion

Voici un exemple de fonction Lambda mis à jour :

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)
}
Copier après la connexion

Déployer votre Lambda

  1. Déployez la fonction Lambda sur AWS.
  2. Créez une API HTTP dans API Gateway et intégrez-la à votre fonction Lambda.
  3. Testez le point de terminaison : l'envoi d'une requête à /health devrait renvoyer un message de réussite, tandis que tout autre chemin renvoie un 404.

Conclusion

Le passage à APIGatewayV2HTTPRequest résout le problème d'un chemin vide dans votre fonction Lambda lors de l'utilisation de l'API HTTP API Gateway (v2). Assurez-vous de tester votre point de terminaison pour vous assurer que le routage du chemin fonctionne comme prévu.

Provenant d'un problème github :

https://github.com/aws/aws-lambda-go/issues/60

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal