我想通过一个lambda函数调用代理来自root的所有HTTP请求.
无服务器.yml代码段
functions:
hello:
handler: bin/hello
url: true
events:
- httpApi:
# path: /{proxy+}
path: /{any+}
method: get
main.go
import (
"fmt"
"github.com/apex/gateway"
"github.com/gin-gonic/gin"
"log"
"net/http"
"os"
)
func inLambda() bool {
if lambdaTaskRoot := os.Getenv("LAMBDA_TASK_ROOT"); lambdaTaskRoot != "" {
return true
}
return false
}
func setupRouter() *gin.Engine {
gin.SetMode(gin.DebugMode)
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "home page"})
})
r.GET("/hello-world", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "hello test completed successfully"})
})
return r
}
func main() {
if inLambda() {
fmt.Println("running aws lambda in aws")
log.Fatal(gateway.ListenAndServe(":8080", setupRouter()))
} else {
fmt.Println("running aws lambda in local")
log.Fatal(http.ListenAndServe(":8080", setupRouter()))
}
}