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 :
func main() {
lambda.Start(ProcessIncomingS3Events)
lambda.Start(ProcessIncomingEvents)
}
Cette méthode a échoué car le premier déclencheur (ProcessIncomingS3Events) gérerait toujours tous les événements.
Deuxième approche :
func main() {
lambda.Start(ProcessIncomingEvents)
}
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 :
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{})
}
Avec cette approche, votre fonction Lambda peut écouter divers événements AWS et les gérer en conséquence.
Bien que l'utilisation de cette méthode offre de la flexibilité, n'oubliez pas que les fonctions Lambda sont conçu pour gérer efficacement un seul type d’événement. La combinaison de plusieurs types d'événements peut introduire des complexités et des problèmes de performances.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3