在本地运行golang lambda函数

ryevplcw  于 2023-05-11  发布在  Go
关注(0)|答案(3)|浏览(113)

我正在尝试开发一个必须与S3和dynamoDB一起工作的lambda。问题是,因为我不熟悉AWS for Go的SDK,我将进行大量的测试和尝试。每一次我将改变代码是另一次我必须编译项目并上传到AWS。有没有办法在当地做?传递某种配置,让我从我的计算机本地调用AWS的服务?谢谢!

  • 这主要与golang有关,其他语言(如python)可以直接在aws lambda函数页上运行,node支持cloud9
mbzjlibv

mbzjlibv1#

您可以使用lambci docker镜像在本地使用AWS上使用的相同Lambda运行时执行代码。
https://github.com/lambci/docker-lambda
您也可以在另一个容器中本地运行dynamoDB
https://hub.docker.com/r/amazon/dynamodb-local/
要模拟Lambda上可用的凭据/角色,只需通过环境变量传入您的API凭据。(用于S3访问)
干杯-JH

2cmtqfgy

2cmtqfgy2#

您可以在本地下载AWS lambda运行时环境,如in AWS documentation所述

mkdir -p ~/.aws-lambda-rie && curl -Lo ~/.aws-lambda-rie/aws-lambda-rie \
https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie \
&& chmod +x ~/.aws-lambda-rie/aws-lambda-rie

要测试本地运行的lambda函数,您可以在终端会话上运行:

~/.aws-lambda-rie/aws-lambda-rie go run main.go

这将启动一个侦听端口8080的服务器。要实际触发lambda函数,您可以最终在另一个终端会话上运行:

curl -XPOST "http://localhost:8080/2015-03-31/functions/function/invocations" -d '{"Name": "World"}'

最后但并非最不重要的是,我建议你看看localstack。您可以启动一个在本地运行的docker容器,并模拟AWS S3和DynamoDB API,因此您可以检查代码的正确性,而无需将任何内容部署到AWS。

d8tt03nd

d8tt03nd3#

您可以使用这个aws-lambda-go-test模块,它可以在本地运行lambda,并可用于测试lambda的实际响应。
完全披露我分叉和升级这个模块

相关问题