首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用go-iris框架将REST部署到AWS lambda

如何使用go-iris框架将REST部署到AWS lambda
EN

Stack Overflow用户
提问于 2020-07-13 08:32:10
回答 1查看 308关注 0票数 3

我使用Go Iris框架创建了REST。现在,我想用lambda函数在AWS上部署这些API。我正在使用MySQL作为数据库。是否可以在AWS上部署Go可执行文件,或者是否需要根据AWS规范修改代码?我正在设法找到解决办法,但没有得到多少信息。

这里是我的API端点之一。

代码语言:javascript
复制
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)
}

我没有更多的API端点来执行基本的CRUD操作。我正在考虑使用AWS、lambda和API网关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 11:14:24

是否需要根据AWS规范修改我的代码?

是。用于lambda的代码需要有一个处理程序

这是函数的入口点。

而且,你的围棋程序似乎是一个建立在iris上的web服务器。如果是这样的话,您将无法使用它,因为您的不能像普通服务器那样从internet调用lambda。

此外,lambda最多运行15分钟,因此它作为服务器的使用将是非常有限的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62872066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档