Prise en charge de plusieurs déclencheurs d'événements dans AWS Lambda avec Golang
Dans AWS Lambda, la gestion de plusieurs déclencheurs d'événements permet aux fonctions de répondre à diverses sources, telles que à mesure que le compartiment S3 change et que les messages d'une file d'attente SQS. Voici comment implémenter plusieurs déclencheurs dans Golang :
Utilisation de l'interface AWS Handler
Pour prendre en charge plusieurs événements, implémentez l'interface AWS Handler, qui définit la méthode Invoke :
<code class="go">import ( "context" "github.com/aws/aws-lambda-go/events" ) type Handler struct { // Global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Handle events based on their types apiGatewayEvent := events.APIGatewayProxyRequest{} if err := json.Unmarshal(data, &apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := events.SNSEvent{} if err := json.Unmarshal(data, &snsEvent); err != nil { log.Println("Not an SNS event") } return nil, nil }</code>
Fonction principale
Dans la fonction principale, enregistrez le gestionnaire multi-événements :
<code class="go">func main() { lambda.StartHandler(Handler{}) }</code>
Exemple de déclencheurs multiples
Pour écouter les événements S3 et SQS, ajoutez les fonctions suivantes :
<code class="go">func processS3Trigger(config *Config, event events.S3Event) error { ... log.Println("Got S3 Event") return nil } func processSQSMessage(config *Config) error { ... log.Println("Defaulting to SQS") return nil }</code>
Considérations
Bien que cette approche vous permette de gérer plusieurs déclencheurs dans un seul lambda, il est généralement recommandé d'utiliser des lambdas distincts pour chaque type d'événement afin d'optimiser les performances et la maintenabilité.
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!