AWS Lambda Golang HelloWorld 快速入门

操作步骤

以下测试基于 WSL2 Ubuntu 22.04 环境

shell 复制代码
# 下载最新 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

# 配置使用国内镜像
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

# 创建项目文件夹
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
go 复制代码
// main.go
package main

import (
        "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)
}
shell 复制代码
# 编译
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 数据格式:

json 复制代码
{
  "name": "Dexter"
}

Test, 欧耶~报错了!

返回 Code 标签页, 看到默认的 Handler 设置的是 hello, 这和我们写的入口函数名称不匹配, 是导致测试失败的原因.

Edit 修改 Handler 为 main

再次 Test, succeeded!

填坑记录

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

bash 复制代码
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

相关推荐
荣光波比33 分钟前
Nginx 实战系列(七)—— Nginx一键安装脚本详解
运维·nginx·自动化·云计算
可观测性用观测云2 小时前
AWS SQS 可观测性最佳实践
aws
练习两年半的工程师3 小时前
AWS TechFest 2025: 智能体企业级开发流程、Strands Agents
人工智能·云计算·aws
kite01213 小时前
Gin + Zap 日志:构建高性能、结构化的应用日志系统
golang·gin·log·zap
TMT星球4 小时前
中国AI云市场报告:阿里云份额达35.8%,高于2至4名总和
人工智能·阿里云·云计算
OxYGC5 小时前
[玩转GoLang] 5分钟整合Gin / Gorm框架入门
开发语言·golang·gin
荣光波比5 小时前
Nginx 实战系列(六)—— Nginx 性能优化与防盗链配置指南
运维·nginx·性能优化·云计算
智能化咨询6 小时前
【56页PPT】数字化智能工厂总体设计SRMWCSWMSMES&EMS系统建设方案(附下载方式)
大数据·云计算
Britz_Kevin7 小时前
从零开始的云计算生活——第六十天,志在千里,使用Jenkins部署K8S
云计算·jenkins·生活
Clownseven7 小时前
2025云计算趋势:Serverless与AI大模型如何赋能中小企业
人工智能·serverless·云计算