Maison  >  Article  >  développement back-end  >  Comment prendre en charge plusieurs déclencheurs dans AWS Lambda avec Golang ?

Comment prendre en charge plusieurs déclencheurs dans AWS Lambda avec Golang ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 01:57:291015parcourir

How to Support Multiple Triggers in AWS Lambda with Golang?

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!

Déclaration:
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