[英]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.