AWS Lambda oferece suporte a funções de gatilho de várias fontes, incluindo eventos S3 e mensagens SQS. No entanto, quando você exige que sua função Lambda responda a vários acionadores, surge um dilema.
Você tentou duas abordagens:
Primeira abordagem:
func main() {
lambda.Start(ProcessIncomingS3Events)
lambda.Start(ProcessIncomingEvents)
}
Este método falhou porque o primeiro gatilho (ProcessIncomingS3Events) sempre manipularia todos os eventos.
Segunda abordagem:
func main() {
lambda.Start(ProcessIncomingEvents)
}
Nesse cenário, o Lambda não conseguiu identificar o tipo de evento, resultando em erros "Não foi possível encontrar o tipo de evento" para todos os gatilhos.
Para superar essas limitações, você pode implementar um manipulador de vários eventos usando a interface AWS Handler. Aqui está um exemplo de implementação:
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{})
}
Com essa abordagem, sua função Lambda pode ouvir vários eventos da AWS e tratá-los adequadamente.
Embora o uso desse método forneça flexibilidade, lembre-se de que as funções Lambda são projetado para lidar com um único tipo de evento de forma eficaz. A mistura de vários tipos de eventos pode introduzir complexidades e problemas de desempenho.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3