AWS Lambda prend en charge les fonctions de déclenchement à partir de diverses sources, notamment les événements S3 et les messages SQS. Cependant, lorsque vous demandez à votre fonction Lambda de répondre à plusieurs déclencheurs, un dilemme se pose.
Vous avez essayé deux approches :
Première approche :
<code class="go">func main() { lambda.Start(ProcessIncomingS3Events) lambda.Start(ProcessIncomingEvents) }</code>
Cette méthode a échoué car le premier déclencheur (ProcessIncomingS3Events) gérerait toujours tous les événements.
Deuxième approche :
<code class="go">func main() { lambda.Start(ProcessIncomingEvents) }</code>
Dans ce scénario, Lambda n'a pas pu identifier le type d'événement, ce qui a entraîné des erreurs « Impossible de trouver le type d'événement » pour tous les déclencheurs.
Pour surmonter ces limitations, vous pouvez implémenter un gestionnaire multi-événements à l'aide de l'interface AWS Handler. Voici un exemple d'implémentation :
<code class="go">type Handler struct { // Define global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshal the data based on different event types var apiGatewayEvent events.APIGatewayProxyRequest if err := json.Unmarshal(data, &apiGatewayEvent); err == nil { // Handle API Gateway event } var snsEvent events.SNSEvent if err := json.Unmarshal(data, &snsEvent); err == nil { // Handle SNS event } return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
Avec cette approche, votre fonction Lambda peut écouter divers événements AWS et les gérer en conséquence.
Lorsque l'utilisation de cette méthode fournit flexibilité, n'oubliez pas que les fonctions Lambda sont conçues pour gérer efficacement un seul type d'événement. Mélanger plusieurs types d'événements peut introduire des complexités et des problèmes de performances.
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!