使用Golang 在AWS Lambda 中支援多個觸發器
在AWS Lambda 中,您可以建立回應各種事件的函數,例如S3 觸發器和SQS 訊息。然而,在單一函數中支援多個觸發器可能具有挑戰性。本文將引導您在 Golang 中完成此任務所需的步驟。
您最初嘗試為 S3 事件和 SQS 訊息註冊兩個不同的處理程序。但是,這種方法會導致每次呼叫第一個處理程序或 Lambda 無法偵測事件類型。
要克服此限制,我們建議使用 AWS Handler 介面。此介面定義了一個方法 Invoke,它接受事件的原始位元組作為其參數。
以下是多事件處理程序的範例實作:
<code class="go">type Handler struct { // Add global variables or context information as needed } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Unmarshall the event data into different supported event types apiGatewayEvent := new(events.APIGatewayProxyRequest) if err := json.Unmarshal(data, apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := new(events.SNSEvent) if err := json.Unmarshal(data, snsEvent); err != nil { log.Println("Not an SNS event") } // Perform appropriate actions based on the event type return nil, nil } func main() { lambda.StartHandler(Handler{}) }</code>
此處理程序可讓您使用相同的 Lambda 函數處理任何 AWS 事件。然而,值得注意的是,lambda 通常最適合處理單一類型的事件。使用多事件處理程序可能會導致測試和偵錯變得複雜。
以上是如何使用 Golang 支援 AWS Lambda 中的多個觸發器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!