我正在尝试开发一个必须与S3和dynamoDB一起工作的lambda。问题是,因为我不熟悉AWS for Go的SDK,我将进行大量的测试和尝试。每一次我将改变代码是另一次我必须编译项目并上传到AWS。有没有办法在当地做?传递某种配置,让我从我的计算机本地调用AWS的服务?谢谢!
cloud9
mbzjlibv1#
您可以使用lambci docker镜像在本地使用AWS上使用的相同Lambda运行时执行代码。https://github.com/lambci/docker-lambda您也可以在另一个容器中本地运行dynamoDBhttps://hub.docker.com/r/amazon/dynamodb-local/要模拟Lambda上可用的凭据/角色,只需通过环境变量传入您的API凭据。(用于S3访问)干杯-JH
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。
d8tt03nd3#
您可以使用这个aws-lambda-go-test模块,它可以在本地运行lambda,并可用于测试lambda的实际响应。完全披露我分叉和升级这个模块
3条答案
按热度按时间mbzjlibv1#
您可以使用lambci docker镜像在本地使用AWS上使用的相同Lambda运行时执行代码。
https://github.com/lambci/docker-lambda
您也可以在另一个容器中本地运行dynamoDB
https://hub.docker.com/r/amazon/dynamodb-local/
要模拟Lambda上可用的凭据/角色,只需通过环境变量传入您的API凭据。(用于S3访问)
干杯-JH
2cmtqfgy2#
您可以在本地下载AWS lambda运行时环境,如in AWS documentation所述
要测试本地运行的lambda函数,您可以在终端会话上运行:
这将启动一个侦听端口8080的服务器。要实际触发lambda函数,您可以最终在另一个终端会话上运行:
最后但并非最不重要的是,我建议你看看localstack。您可以启动一个在本地运行的docker容器,并模拟AWS S3和DynamoDB API,因此您可以检查代码的正确性,而无需将任何内容部署到AWS。
d8tt03nd3#
您可以使用这个aws-lambda-go-test模块,它可以在本地运行lambda,并可用于测试lambda的实际响应。
完全披露我分叉和升级这个模块