AWS Lambda 支援來自各種來源的觸發函數,包括S3 事件和SQS 訊息。但是,當您需要 Lambda 函數來回應多個觸發器時,就會出現困境。
您嘗試了兩種方法:
第一種方法:
<code class="go">func main() { lambda.Start(ProcessIncomingS3Events) lambda.Start(ProcessIncomingEvents) }</code>
此方法失敗,因為第一個觸發器(ProcessIncomingS3Events) 總是會處理所有事件。
第二種方法:
<code class="go">func main() { lambda.Start(ProcessIncomingEvents) }</code>
在這種情況下,Lambda 無法辨識事件類型,導致所有觸發器出現「無法找到事件類型」錯誤。
要克服這些限制,您可以使用 AWS Handler 介面實作多事件處理程序。這是一個範例實作:
<code class="go">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{}) }</code>
透過這個方法,您的 Lambda 函數可以偵聽各種 AWS 事件並相應地處理它們。
使用此方法時提供彈性,請記住 Lambda 函數旨在有效處理單一類型的事件。混合多種事件類型可能會帶來複雜性和效能問題。
以上是如何使用 Golang 處理 AWS Lambda 中的多個觸發器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!