在Golang 中開發AWS Lambda 函數時,可能需要支援多個觸發器,例如S3和SQS。然而,要實現這一點可能具有挑戰性,因為問題中描述的初始嘗試通常會導致意外行為。
為了有效支援多個觸發器,建議實作AWS Handler 接口,它使用以下簽章定義Invoke 方法:
Invoke(ctx context.Context, payload []byte) ([]byte, error)
透過實作Handler 接口,您的函數可以接收和處理來自各種AWS 來源的原始事件資料。以下是多事件處理程序的範例:
<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>
此方法可讓您的 Lambda 接收和處理來自多個 AWS 服務的事件。但是,請務必仔細考慮多事件處理程序是否與您的應用程式架構保持一致,因為 Lambda 函數通常設計用於處理特定類型的事件。
以上是如何使用 Golang 在 AWS Lambda 函數中有效支援多個觸發器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!