当前位置: 首页 > 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

# 配置使用国内镜像
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

// 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)
}
# 编译
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

相关文章:

  • Mac上如何修复损坏的音频?试试iZotope RX 10,对音频进行处理,提高音频质量!
  • PsychoPy Coder 心理学实验 斯特鲁普效应
  • 代码随想录Day57、58 | 392.判断子序列 | 115. 不同的子序列 | 583. 两个字符串的删除操作 | 72. 编辑距离
  • 《幸福之路》罗素(读书笔记)
  • 力扣-367.有效的完全平方数
  • Python中取2023, 9, 1——2023, 10, 31的全部时间
  • JAVA面经整理(8)
  • 使用Jest测试Cesium源码
  • Vue中实现自定义编辑邮件发送到指定邮箱(纯前端实现)
  • 分布式并行训练(DP、DDP、DeepSpeed)
  • 经典算法-----汉诺塔问题
  • 本地连接服务器 jupyter notebook
  • 6.Tensors For Beginners-What are Convector
  • linux基础知识之文件系统 df/du/fsck/dump2fs
  • python监控ES索引数量变化
  • 电脑通过串口助手和51单片机串口通讯
  • 【Java 进阶篇】JDBC 数据库连接池 C3P0 详解
  • 华为云云耀云服务器L实例评测|Elasticsearch的springboot整合 Kibana进行全查询和模糊查询
  • 记录使用vue-test-utils + jest 在uniapp中进行单元测试
  • 前端开发网站推荐
  • 人民文学奖颁出,董宇辉获传播贡献奖
  • 今年1-3月全国吸收外资2692.3亿元人民币
  • 霸王茶姬成美股“中国茶饮第一股”:首日涨近16%,市值60亿美元
  • 特朗普叫停已许可的海上风电,机构将美国风电前景下调40%
  • 中国金茂与建发国际联合收购北京丰台地块,总价18.4亿元
  • 天津博物馆五一开展,八省文物呈现北朝风貌