使用Golang 在AWS Lambda 中支援多個事件觸發器
在AWS Lambda 中,處理多個事件觸發器可讓函數處理多個事件觸發器回應各種來源,例如作為S3 儲存桶變更和來自SQS 佇列的訊息。以下是如何在Golang 中實現多個觸發器:
使用AWS Handler 接口
要支援多個事件,請實現AWS Handler 接口,該接口定義了Invoke 方法:
<code class="go">import ( "context" "github.com/aws/aws-lambda-go/events" ) type Handler struct { // Global variables or context information } func (h Handler) Invoke(ctx context.Context, data []byte) ([]byte, error) { // Handle events based on their types apiGatewayEvent := events.APIGatewayProxyRequest{} if err := json.Unmarshal(data, &apiGatewayEvent); err != nil { log.Println("Not an API Gateway event") } snsEvent := events.SNSEvent{} if err := json.Unmarshal(data, &snsEvent); err != nil { log.Println("Not an SNS event") } return nil, nil }</code>
主要函數
在主函數中,註冊多事件處理程序:
<code class="go">func main() { lambda.StartHandler(Handler{}) }</code>
多個觸發器範例
同時監聽S3和SQS事件,加入以下內容函數:
<code class="go">func processS3Trigger(config *Config, event events.S3Event) error { ... log.Println("Got S3 Event") return nil } func processSQSMessage(config *Config) error { ... log.Println("Defaulting to SQS") return nil }</code>
注意事項
注意事項雖然方法可讓您在單一lambda 中處理多個觸發器,但通常建議為每個事件類型使用單獨的lambda最佳化效能和可維護性。以上是如何使用 Golang 在 AWS Lambda 中實作多個事件觸發器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!