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

AWS Lambda Golang HelloWorld 快速入门

操作步骤

以下测试基于 WSL2 Ubuntu 22.04 环境

# 下载最新 golang
wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz# 解压
tar -C ~/.local/ -xzf go1.21.1.linux-amd64.tar.gz# 配置环境变量 PATH
echo 'export PATH=$PATH:~/.local/go/bin' >> ~/.bashrc
source ~/.bashrc# 确认执行版本
go version
# go version go1.21.1 linux/amd64# 创建项目文件夹
mkdir aws-lambda-go && cd aws-lambda-go# 初始化项目
go mod init aws-lambda-go# 安装依赖
go get github.com/aws/aws-lambda-go/lambda# 编辑主函数
vim main.go
// main.go
package mainimport ("fmt""context""github.com/aws/aws-lambda-go/lambda"
)type MyEvent struct {Name string `json:"name"`
}func HandleRequest(ctx context.Context, name MyEvent) (string, error) {return fmt.Sprintf("Hello %s!", name.Name ), nil
}func main() {lambda.Start(HandleRequest)
}
# 编译
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main main.go# 打包
zip -jrm main.zip main

来到 Lambda 控制台, 创建新的函数, Runtime 选择 Go 1.x
在这里插入图片描述
Code > Upload from > .zip file

在这里插入图片描述
选择前面编译并打包的 main.zip 文件上传. 随后创建新的 Test 匹配 Lambda 处理的 Event 数据格式:

{"name": "Dexter"
}

在这里插入图片描述
Test, 欧耶~报错了!
在这里插入图片描述
返回 Code 标签页, 看到默认的 Handler 设置的是 hello, 这和我们写的入口函数名称不匹配, 是导致测试失败的原因.
在这里插入图片描述
Edit 修改 Handler 为 main
在这里插入图片描述
再次 Test, succeeded!

在这里插入图片描述

填坑记录

参考 官方文档 中的编译命令:

GOOS=linux GOARCH=amd64 go build -o bootstrap main.go

编译打包上传后在测试时会报错:

/var/task/main: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by /var/task/main)

需要在编译时加上参数 CGO_ENABLED=0 也就是前面操作步骤中的编译命令才能正确运行. 相关讨论:
https://github.com/aws/aws-lambda-go/issues/340

http://www.lryc.cn/news/180221.html

相关文章:

  • 【C++】单例模式
  • 【kubernetes】使用luakube访问kubernetes api
  • 【算法分析与设计】贪心算法(下)
  • Arm Cache学习资料大汇总
  • Docker 学习总结(79)—— Dockerfile 编写技巧总结
  • 链表经典面试题(二)
  • 89、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->Zset 相关命令
  • 知识图谱02——使用python将信息录入neo4j
  • greenDAO-Android轻量级快速ORM框架
  • 结构型设计模式——组合模式
  • 40. 组合总和 II
  • 安卓玩机-----给app加注册码 app加弹窗 云注入弹窗
  • NLP的不同研究领域和最新发展的概述
  • 1.物联网射频识别,RFID概念、组成、中间件、标准,全球物品编码——EPC码
  • MySQL函数与控制结构
  • 【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式
  • 如何在 Elasticsearch 中使用 Openai Embedding 进行语义搜索
  • 世界第一ERP厂商SAP,推出类ChatGPT产品—Joule
  • 嵌入式Linux应用开发-基础知识-第十八章系统对中断的处理③
  • 【Python】返回指定时间对应的时间戳
  • 微服务moleculer03
  • [React] react-router-dom的v5和v6
  • Linux命令(91)之mv
  • C++ 强制类型转换(int double)、查看数据类型、自动决定类型、三元表达式、取反、
  • Android自动化测试之MonkeyRunner--从环境构建、参数讲解、脚本制作到实战技巧
  • Neural Insights for Digital Marketing Content Design 阅读笔记
  • BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)
  • 中间件中使用到的设计模式
  • 运用动态内存实现通讯录(增删查改+排序)
  • 基于Cplex的人员排班问题建模求解(JavaAPI)