簡介
建議的解決方案
您嘗試了兩種方法:
第一個方法:func main() {
lambda.Start(ProcessIncomingS3Events)
lambda.Start(ProcessIncomingEvents)
}
func main() { lambda.Start(ProcessIncomingS3Events) lambda.Start(進程傳入事件) }
此方法失敗,因為第一個觸發器 (ProcessIncomingS3Events) 總是會處理所有事件。
第二種方法:func main() {
lambda.Start(ProcessIncomingS3Events)
lambda.Start(ProcessIncomingEvents)
}
func main( ){ lambda.Start(進程傳入事件) }
多事件處理程序實作
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{})
}
type Handler struct { // 定義全域變數或上下文訊息 } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // 根據不同的事件類型對資料進行解組 var apiGatewayEvent events.APIGatewayProxyRequest if err := json.Unmarshal(data, &apiGatewayEvent);錯誤==零{ // 處理API網關事件 } var snsEvent events.SNSEvent if err := json.Unmarshal(data, &snsEvent);錯誤==零{ // 處理SNS事件 } 返回零,零 } 函數主() { lambda.StartHandler(處理程序{}) }
注意事項
雖然使用此方法提供了靈活性,但請記住 Lambda 函數旨在有效地處理單一類型的事件。混合多種事件類型可能會帶來複雜性和效能問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3