当前位置: 首页 > news >正文

网站运营的成本广宁网站建设

网站运营的成本,广宁网站建设,合肥网站开发需要多,在线游戏网站Go编程语言一直以来都对构建REST API提供了丰富的支持。这包括一个出色的标准库#xff08;net/HTTP#xff09;#xff0c;以及许多流行的包#xff0c;如Gorilla mux、Gin、Negroni、Echo、Fiber等。使用AWS Lambda Go运行时#xff0c;我们可以使用Go构建AWS Lambda函数…Go编程语言一直以来都对构建REST API提供了丰富的支持。这包括一个出色的标准库net/HTTP以及许多流行的包如Gorilla mux、Gin、Negroni、Echo、Fiber等。使用AWS Lambda Go运行时我们可以使用Go构建AWS Lambda函数。想象一下一个Web应用程序需要对用户进行身份验证、存储用户数据和发送电子邮件。采用无服务器的方法可以将每个功能/API实现为单独的Lambda函数。例如我们可以有一个Lambda函数来处理用户注册另一个来处理用户登录依此类推。如果我们从头开始构建一切这很好。但是如果我们想将现有的Go REST API作为AWS Lambda函数运行该怎么办呢大体上来说您需要进行以下操作 将现有的代码拆分为多个Lambda函数。重构每个函数以适配AWS Lambda Go运行时API。 不过使用AWS Lambda Go API Proxy有一种更简单的方法。 接下来将演示如何使用AWS Lambda和Amazon API Gateway以无服务器方式运行基于Go框架的现有API。将通过简单的代码示例和框架来了解它们的工作原理并使用AWS Serverless Application ModelSAM部署它们。代码可在此GitHub存储库中找到。让我们从AWS Lambda Go API Proxy的简要介绍开始。 AWS Lambda Go API Proxy它是如何工作的 aws-lambda-go-api-proxy包使得使用框架如Gin编写的Go API能够轻松地在AWS Lambda和Amazon API Gateway上运行。除了适配器实现针对Go标准库和其他框架如等外aws-lambda-go-api-proxy还声明了一个包其中包含了将API Gateway代理事件转换为Go默认和对象的实用方法和接口并允许您将任何框架适配到AWS Lambda Go运行时中。 下面是它的高级工作原理概述 Lambda函数处理程序接收API Gateway的请求。函数处理程序将请求代理到与框架对应的适配器实现。最后将API Gateway代理响应返回给客户端。 再让我们深入了解一下特定于框架的行为。 gorilla/mux库 gorilla/mux包实现了一个请求路由器和调度器用于将传入的请求与其相应的处理程序进行匹配。与Go标准库中的类似它将传入的请求与注册的路由列表进行匹配并调用与URL或其他条件匹配的路由的处理程序。由于实现了接口与其他的兼容。下面有一个简单的Lambda函数示例使用适配器实现与gorilla/mux包一起使用 var gorillaLambda *gorillamux.GorillaMuxAdapter ​ func init() {r : mux.NewRouter() ​r.HandleFunc(/ping, func(w http.ResponseWriter, r *http.Request) {json.NewEncoder(w).Encode(Response{From: gorilla, Message: time.Now().Format(time.UnixDate)})}) ​gorillaLambda gorillamux.New(r) } ​ func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {r, err : gorillaLambda.ProxyWithContext(ctx, *core.NewSwitchableAPIGatewayRequestV1(req))return *r.Version1(), err } ​ func main() {lambda.Start(Handler) }在这个函数中函数接收一个 http.Request 对象其中定义了路由并返回一个 http.Response 对象。在实现中Handler 对象的 ServeHTTP 方法接收 http.Request 对象将其转换为 http.ResponseWriter 对象并将其发送到路由器进行路由处理。它将根据写入到响应写入器的数据生成一个代理响应对象http.Response。 Echo框架 Echo是另一个流行的Go Web框架它既简约又高度可扩展。下面是一个简单的Lambda函数示例使用适配器实现与Echo框架一起使用 var echoLambda *echoadapter.EchoLambda ​ func init() {e : echo.New() ​e.Use(middleware.Logger())e.Use(middleware.Recover()) ​e.GET(/ping, func(c echo.Context) error {return c.JSON(http.StatusOK, Response{From: echo, Message: time.Now().Format(time.UnixDate)})}) ​echoLambda echoadapter.New(e) } ​ func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {return echoLambda.ProxyWithContext(ctx, req) } ​ func main() {lambda.Start(Handler) }该函数设置了一个路由器echo.Echo并将其传递给 echoadapter.New 函数返回一个适配器实现echoadapter.EchoLambda。在函数中Handler 对象的 ProxyWithContext 方法接收 events.APIGatewayProxyRequest 对象并将其转换为 http.Request 对象然后将其发送到 echo.Echo 进行路由处理。它将根据写入到响应写入器的数据生成一个代理响应对象events.APIGatewayProxyResponse。 net/http 对于net/http包适配器实现的工作方式也是相同的。以下是代码片段的示例 var httpLambda *httpadapter.HandlerAdapter ​ func init() {http.HandleFunc(/ping, func(w http.ResponseWriter, r *http.Request) {json.NewEncoder(w).Encode(Response{From: net/http, Message: time.Now().Format(time.UnixDate)})}) ​httpLambda httpadapter.New(http.DefaultServeMux) } ​ func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) { ​return httpLambda.ProxyWithContext(ctx, req) } ​ func main() {lambda.Start(Handler) }要与标准库一起使用该函数接收一个 http.Handler 对象其中定义了路由并返回一个 httpadapter.HandlerAdapter 对象。然后可以使用 ProxyWithContext 方法将其作为Lambda处理程序。 部署到AWS Lambda 使用SAM CLI将这些函数部署到AWS Lambda。 先决条件 需要安装了Go编程语言v1.18或更高版本和AWS SAM。克隆项目并切换到正确的目录。 git clone https://github.com/build-on-aws/golang-apis-on-aws-lambda ​ cd golang-apis-on-aws-lambda基于gorilla和mux的Lambda函数 首先将CodeUri在template.yaml文件中更新为代码所在的本地文件夹路径。 构建函数 sam build ​ #expected output ​ Building codeuri: path/lambda-go-api-proxy-getting-started/gorilla runtime: go1.x metadata: {} architecture: x86_64 functions: DemoFunction Running GoModulesBuilder:Build ​ Build Succeeded ....部署函数按照SAM CLI的提示进行操作 export STACK_NAMElambda-go-gorilla ​ sam deploy --stack-name $STACK_NAME --guided ​ # response to the prompts ​ Stack Name [lambda-go-gorilla]: press enter AWS Region [us-east-1]: enter alternate region or press enter #Shows you resources changes to be deployed and require a Y to initiate deploy Confirm changes before deploy [y/N]: n #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: y #Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]: n DemoFunction may not have authorization defined, Is this okay? [y/N]: y Save arguments to configuration file [Y/n]: y SAM configuration file [samconfig.toml]: press enter SAM configuration environment [default]: press enter部署完成后转到AWS控制台检查已部署的堆栈和相关资源。这些资源包括Lambda函数、API GatewayREST API、IAM角色等。 可以在SAM CLI的输出中看到API Gateway的端点或者在Outputs部分中找到它。 ----------------------------------------------------------------------------------------------------- CloudFormation outputs from deployed stack -------------------------------------------------------------------------------------------------------- Outputs -------------------------------------------------------------------------------------------------------- Key APIGWEndpoint Description API Gateway Endpoint Value https://whrd2yy3ug.execute-api.us-east-1.amazonaws.com/dev/ping -------------------------------------------------------------------------------------------------------- ​ Successfully created/updated stack - lambda-go-gorilla in us-east-1要测试函数请使用以下命令调用API Gateway export API_ENDPOINTenter the API Gateway endpoint here ​ curl $API_ENDPOINT会得到类似以下的响应 {from: gorilla,message: Tue Jun 27 18:10:54 UTC 2023 }net/http和基于echo的Lambda函数 在部署这两个函数之前请确保将CodeUri更新为代码所在的本地文件夹路径- 对于net/http包更新为http-stdlib/。- 对于echo框架更新为echo/。构建并部署函数按照之前的提示进行操作 sam build ​ # change the stack name to lambda-go-echo in case of echo framework export STACK_NAMElambda-go-nethttp ​ sam deploy --stack-name $STACK_NAME --guided可以通过调用API Gateway端点来测试函数 export API_ENDPOINTenter your API endpoint here ​ curl $API_ENDPOINT会得到下面的响应 {from: net/http,message: Tue Jun 27 18:20:42 UTC 2023 }对于框架的情况会得到下面的响应注意字段中的不同名称 {from: echo,message: Tue Jun 27 18:30:25 UTC 2023 }以上步骤已成功将Go API部署为AWS Lambda函数。完成后请删除堆栈 sam delete --stack-name lambda-go-gorilla sam delete --stack-name lambda-go-nethttp sam delete --stack-name lambda-go-echo结论 上面演示了AWS Lambda Go API代理以及它的框架/包对于gorilla/mux、echo和net/http特定的适配器实现能够将现有的Go应用程序作为AWS Lambda函数运行并由API Gateway提供前端服务。通过简单的代码示例学习了基本概念使用AWS SAM CLI部署了这些函数并通过调用API Gateway端点进行了验证。 作者Abhishek Gupta 更多技术干货请关注公众号“云原生数据库” squids.cn目前可体验全网zui低价RDS免费的迁移工具DBMotion、SQL开发工具等。
http://www.hkea.cn/news/14475056/

相关文章:

  • 网站建设同行友情链接永久免费正版cad类软件
  • 厦门市建设局综合业务平台网站网站推广seo是什么
  • 上海化工网站建设wordpress新建页面不能保存路径
  • 网站建设商务代表工作总结高效网站推广公司
  • 坂田网站建设流程wordpress清除模板缓存
  • php网站方案建设网站需要域名还有什么
  • 网站如何做那种诱导广告阿里去可以做几个网站
  • 建个网站需要多少钱?新手搭建做网站
  • 成都做网站优化价格最好的网站建设哪家好
  • 公司网站建设须知网站平台建设缴纳什么税
  • 建设银行金牛支行网站什么软件做美食视频网站好
  • 海珠营销型网站建设公司怎么制作小程序商城
  • 教做幼儿菜谱菜的网站wordpress模仿app启动广告屏弹窗
  • 华为seo诊断及优化分析网站优化是怎么做的
  • 营销型网站建设市场wordpress jw
  • 莒南网站建设在线logo设计生成器
  • 手机上传网站源码开普网站建设公司
  • 温岭专业自适应网站建设wordpress 数据库填写
  • 电信网站开发语言主要用什么成都定制app开发
  • 尤溪建设局网站健康网站 模板
  • 学校建设网站的结论深圳平面设计公司排行
  • 织梦网站如何生成伪静态吉林网络公司
  • 360极速怎么屏蔽网站visualstudio网页设计作业
  • 山东网站排行公司logo设计大全创意
  • 站长之家模板凡科建站如何制作论坛
  • 买服饰网站建设订单系统单页面网站怎么做
  • pyhton可以做网站吗电子商务网站建设维护有没有欺骗
  • 包头手机网站建设企业网站推广的好处
  • 网站制作一般需要多少钱?网站平台做推广方案设计
  • 如何找到免费的网站建设能接做网站的活的网站