首页 > 其他分享 >aws-lambda使用gin框架示例

aws-lambda使用gin框架示例

时间:2024-06-07 09:44:27浏览次数:25  
标签:github 示例 aws func gin com lambda

假设现在有个需求,项目需要部署到aws无服务器,但是我们的项目以及是成熟项目了,总不能从头开始写吧?

所以有了github.com/awslabs/aws-lambda-go-api-proxy这个项目

只需要改造路由部分,其他框架官网有示例

package main

import (
	"context"
	"fmt"
	"github.com/aws/aws-lambda-go/events"
	"github.com/aws/aws-lambda-go/lambda"
	"github.com/awslabs/aws-lambda-go-api-proxy/gin"
	"github.com/gin-gonic/gin"
	"net/http"
	"os"
)

var ginLambda *ginadapter.GinLambda

// 判断是不是lambda环境,
// 读环境变量或者配置,这是测试
func inLambda() bool {
	if lambdaTaskRoot := os.Getenv("AWS_LAMBDA"); lambdaTaskRoot != "" {
		return true
	}
	return false
}

// 设置路由
func Router() *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("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"message": "hello test completed successfully"})
	})
	return r
}

// lambda的event处理
func Handler(ctx context.Context, req events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
	return ginLambda.ProxyWithContext(ctx, req)
}

func main() {
	r := Router()
	if inLambda() {
		fmt.Println("running in aws lambda")
		ginLambda = ginadapter.New(r)
		lambda.Start(Handler)
	} else {
		fmt.Println("running in local")
		err := r.Run(":8080")
		if err != nil {
			panic(err)
		}
	}
}

标签:github,示例,aws,func,gin,com,lambda
From: https://www.cnblogs.com/qcy-blog/p/18236559

相关文章

  • 从零手写实现 nginx-09-compress http 文件压缩
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • centos7.9服务器部署nginx1.27.0
    在CentOS7.9服务器上安装带有stream模块的Nginx服务,你需要执行以下步骤:安装依赖:在开始安装Nginx之前,你需要先安装一些必要的依赖库。这包括gcc编译环境、pcre库(用于重写功能)、zlib库(用于http包内容的gzip压缩)、以及openssl库(用于通信加密)。可以使用yum命令进行安装:sudoyumin......
  • Gin框架下的JWT
    Gin框架下的JWT什么是JWT我们都知道,HTTP协议是无状态的,clickhere,那么服务端怎么知道用户状态的呢(比如是否登录呢),这里就需要用到中间件来进行用户认证。中间件认证有这么几种方式sessiontokentoken和session最大的区别就是token是存储在客户端的:我们都知道,session是......
  • Atcoder Beginner Contest 355
    A-WhoAtetheCake?#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;intmain(){ ios::sync_with_stdio(false),cin.tie(nullptr); intA,B; cin>>A>>B; if(A==B)cout<<-1; elsecout<<6-A......
  • 插件:vite-plugin-electron
    源文档地址:vite-plugin-electron安装npmi-Dvite-plugin-electron将vite-plugin-electron添加到vite.config.ts的插件部分importelectronfrom'vite-plugin-electron/simple'exportdefault{plugins:[electron({main:{//`build.lib.ent......
  • 从零手写实现 nginx-07-大文件传输 分块传输(chunked transfer)/ 分页传输(paging)
    前言大家好,我是老马。很高兴遇到你。我们希望实现最简单的http服务信息,可以处理静态文件。如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零手写实现nginx-01-为什么不......
  • nginx mirror流量镜像详细介绍以及实战示例
    nginxmirror流量镜像详细介绍以及实战示例1.nginxmirror作用2.nginx安装3.修改配置3.1.nginx.conf3.2.conf.d目录下添加default.conf配置文件3.3.nginx配置注意事项3.3.nginx重启4.测试1.nginxmirror作用为了便于排查问题,可能希望线上的请求能够同步到测试环境,以......
  • 锐捷校园网自助服务系统 login_judge.jsf 任意文件读取漏洞复现(XVE-2024-2116)
    0x01产品简介锐捷校园网自助服务系统是锐捷网络推出的一款面向学校和校园网络管理的解决方案。该系统旨在提供便捷的网络自助服务,使学生、教职员工和网络管理员能够更好地管理和利用校园网络资源。0x02漏洞概述校园网自助服务系统/selfservice/selfservice/module/scgroup......
  • 编译安装Nginx
    一、Linux常见的IO模型I/O在计算机中指Input/Output,IOPS(Input/OutputPerSecond)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。一次完整的......
  • nginx 多个域名使用同一个通配符证书,并使用 include 指令来避免在多个 server 块中重
    1.创建SSL配置文件首先,创建一个包含SSL配置的文件,例如ssl_params.conf:#ssl_params.confssl_certificate/path/to/your/wildcard_certificate.pem;ssl_certificate_key/path/to/your/wildcard_private_key.key;ssl_session_timeout5m;ssl_ciphersECDHE-......