我使用 Go Iris 框架创建了 REST API。现在我想用 lambda 函数在 AWS 上部署这些 API。我正在使用 MySQL 作为数据库。是否可以在 AWS lambda 上部署我的 Go 可执行文件,或者我是否需要根据 AWS lambda 规范修改我的代码?我试图找到解决方案,但没有得到太多信息。这是我的 API 端点之一。package mainimport ( "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}我还有几个 API 端点可以执行基本的 CRUD 操作。我正在考虑使用 AWS lambda 和 AWS API Gateway。
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
我是否需要根据 AWS lambda 规范修改我的代码?
是的。您的 lambda 代码需要有一个处理程序:
这是您的函数的入口点。
此外,您的 go 程序似乎是基于iris
. 如果是这种情况,您将无法使用它,因为您无法像使用常规服务器那样从 Internet 调用 lambda。
lambda 也最多运行 15 分钟,因此它作为服务器的使用将非常有限。
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消