簡體   English   中英

Golang Lambda Function 確定源

[英]Golang Lambda Function Determine Source

我在 AWS 中有一個用 Golang 編寫的 lambda function,我有兩個可能的觸發執行來源。 一個是對應用程序負載均衡器的直接 HTTP 請求,該請求被傳輸到 Lambda function 並通過github.com/akrylysov/algnhsa適配器 package 處理,另一個是計划的 CloudWatch 事件規則,它發布一個事件到 S 並觸發 NS 事件規則function。

現在,我的main處理程序 function 看起來像:

func main() {
    router := api.NewRouter()
    api.LaunchServerWithAdapter(router)
}

根據文檔, github.com/akrylysov/algnhsa /akrylysov/algnhsa package 獲取上下文和事件有效負載並將其從 ALB 有效負載轉換為原始 HTTP 請求,但是,我還希望能夠處理來自 CloudWatch 的事件觸發function。

我似乎無法從頂級處理程序中找到管理它的方法。 很多例子都有類似的東西:

func main() {
    lambda.Start(handler)
}

func handler(ctx context.Context, event *MyCustomEventType) {
    // ...
}

這個問題是我需要在定義 Lambda 起點之前確定執行源。 以前有人解決過這類問題嗎?

非常確定處理程序可以接收interface{}以支持多種輸入類型

試試這樣的東西,讓我們知道它是否有效,我現在不能花時間來測試它所需的所有樣板。

func handler(ctx context.Context, evt interface{}) error {

  switch t := evt.(type) {
      case events.ALBTargetGroupRequest: 
           return doALB(ctx, t)
      case events.APIGatewayProxyRequest:
           return doAPIGateway(ctx, t)
      default:
           fmt.Println("ALWAYS HANDLE THE DEFAULT!! 😃 ")
           return nil
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM