Lors du développement d'une fonction AWS Lambda dans Golang, il peut être nécessaire de prendre en charge plusieurs déclencheurs , comme S3 et SQS. Cependant, sa mise en œuvre peut être difficile, car les tentatives initiales décrites dans la question conduisent souvent à un comportement inattendu.
Pour prendre en charge efficacement plusieurs déclencheurs, il est recommandé d'implémenter l'interface AWS Handler, qui définit la méthode Invoke avec la signature suivante :
Invoke(ctx context.Context, payload []byte) ([]byte, error)
En implémentant l'interface Handler, votre fonction peut recevoir et traiter des données d'événement brutes provenant de diverses sources AWS. Voici un exemple de gestionnaire multi-événements :
<code class="go">type Handler struct { // Add global variables or context information here } func (h Handler) Invoke(ctx context.Context, payload []byte) ([]byte, error) { // Parse the data as different event types for demonstration purposes apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(payload, apiGatewayEvent); err != nil { log.Println("Not a API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(payload, snsEvent); err != nil { log.Println("Not an SNS event") } // Handle the events as needed return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
Cette approche permet à votre Lambda de recevoir et de traiter des événements de plusieurs services AWS. Cependant, il est important de déterminer attentivement si un gestionnaire multi-événements s'aligne sur l'architecture de votre application, car les fonctions Lambda sont généralement conçues pour gérer un type d'événement spécifique.
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!