Prise en charge de plusieurs déclencheurs dans AWS Lambda avec Golang
Dans AWS Lambda, vous pouvez créer des fonctions qui répondent à divers événements, tels que les déclencheurs S3 et les messages SQS. Cependant, il peut être difficile de prendre en charge plusieurs déclencheurs dans une seule fonction. Cet article vous guidera à travers les étapes nécessaires pour accomplir cette tâche dans Golang.
Vous avez initialement tenté d'enregistrer deux gestionnaires différents pour les événements S3 et les messages SQS. Cependant, cette approche a conduit soit à l'appel du premier gestionnaire à chaque fois, soit à l'incapacité de Lambda à détecter le type d'événement.
Pour surmonter cette limitation, nous vous recommandons d'utiliser l'interface AWS Handler. Cette interface définit une méthode unique, Invoke, qui accepte les octets bruts de l'événement comme argument.
Vous trouverez ci-dessous un exemple d'implémentation d'un gestionnaire multi-événements :
<code class="go">type Handler struct { // Add global variables or context information as needed } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshall the event data into different supported event types apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(data, apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(data, snsEvent); err != nil { log.Println("Not an SNS event") } // Perform appropriate actions based on the event type return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
Ce gestionnaire vous permet de gérer n'importe quel événement AWS avec la même fonction Lambda. Il est toutefois important de noter que les lambdas sont généralement les mieux adaptés à la gestion d'un seul type d'événement. L'utilisation d'un gestionnaire multi-événements peut introduire des complexités dans les tests et le débogage.
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!