Creé la API REST utilizando el marco Go Iris. Ahora quiero implementar estas API en AWS con la función lambda. Estoy usando MySQL como base de datos. ¿Es posible implementar mi archivo ejecutable Go en AWS lambda o debo modificar mi código de acuerdo con las especificaciones de AWS lambda? Estoy tratando de encontrar la solución, pero no obtengo mucha información.
Aquí está uno de mis puntos finales de API.
package main import ( "database/sql" "github.com/kataras/iris" "github.com/kataras/iris/middleware/logger" "github.com/kataras/iris/middleware/recover" ) type Reward struct { Id int `json:"reward_id"` LotteryID int `json:"lottery_id"` RewardName string `json:"reward_name"` Description string `json:"reward_description"` Asset int `json:"reward_asset"` AssetName string `json:"reward_asset_name"` } func dbConn() (db *sql.DB) { dbDriver := "mysql" dbUser := "xxx" dbPass := "xxx" dbName := "xxx" db, err := sql.Open(xxxxxxxxx) if err != nil { panic(err.Error()) } return db } func newApp() *iris.Application { app := iris.New() app.Logger().SetLevel("debug") app.Use(recover.New()) app.Use(logger.New()) db := dbConn() app.Get("/reward/{reward_id:int}", func(ctx iris.Context) { id1 := ctx.Params().GetIntDefault("reward_id", 0) stmtOut, err := db.Prepare("select id, lottery_id,reward_name,reward_description,reward_asset, reward_asset_name from rewards_table where id =?") if err != nil { panic(err.Error()) } defer stmtOut.Close() var id, lotteryId, rewardAsset int var rewardName, rewardDescription, rewardAssetName string err1 := stmtOut.QueryRow(id1).Scan(&id, &lotteryId, &rewardName, &rewardDescription, &rewardAsset, &rewardAssetName) if err1 != nil { panic(err.Error()) } reward := Reward{ Id: id, LotteryID: lotteryId, RewardName: rewardName, Description: rewardDescription, Asset: rewardAsset, AssetName: rewardAssetName, } ctx.JSON(&reward) }) return app } func main() { app := newApp() app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed), iris.WithOptimizations) }Tengo algunos puntos finales de API más que realizan operaciones CRUD básicas. Estoy pensando en usar AWS lambda y AWS API Gateway.
¿Debo modificar mi código de acuerdo con las especificaciones de AWS lambda?
Sí. Su código para lambda requerirá tener un controlador :
Este es el punto de entrada a su función.
También parece que su programa go es un servidor web basado en iris . Si este es el caso, no podrá usarlo de todos modos, ya que no puede invocar lambda desde Internet como lo haría con un servidor normal.
Además, lambda se ejecuta durante un máximo de 15 minutos, por lo que su uso como servidor sería muy limitado.