我想用无服务器应用程序模型(SAM)在本地测试我的lambda函数 在AWS文档中,他们写道:
SAM Local利用 docker-lambda Docker镜像在模拟Lambda执行环境的沙箱中运行代码。
我在我的电脑上拉了泊坞窗图像。我可以成功运行一个简单的Hello World Lambda函数。
在本地运行Lambda函数的命令:
$ docker run -v "$PWD/target/classes":/var/task lambci/lambda:java8 com.amazonaws.lambda.demo.LambdaFunctionHandler
结果:
"Hello from Lambda!"
使用Eclipse Toolkit自动生成的Lambda函数代码:
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
// TODO: implement your handler
return "Hello from Lambda!"
}
}
这是我的进步。我无法做的是使用sam local使用docker-lambda图像。(也许我不应该手动下载它?)。
我在我的Windows上安装了本地sam:
npm install -g aws-sam-local
创建了 template.yaml 配置sam文件。
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31
Resources:
ExampleJavaFunction:
Type: AWS::Serverless::Function
Properties:
Handler: com.amazonaws.lambda.demo.LambdaFunctionHandler
CodeUri: ./target/demo-1.0.0-shaded.jar
Runtime: java8
CodeUri:的名称是在我用以下内容构建阴影jar文件后选择的:
mvn compile shade:shade
在此之后我应该运行我的lambda函数:
$ echo '{ "some": "input" }' | sam local invoke
现在我有错误:
2017/12/05 14:56:36 Successfully parsed template.yaml
2017/12/05 14:56:36 Running AWS SAM projects locally requires Docker. Have you got it installed?
2017/12/05 14:56:36 error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/_ping: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
使用SAM本地与Java有什么错误?是不是因为我的电脑没有Hyper-V而iam使用dockertoolbox?
here你可以看到使用java等编译语言的高级sam文档。
答案 0 :(得分:0)
这是山姆本地的一个错误..修复了新的 update
如果您在Windows中仍有问题,请尝试以下操作:
COMPOSE_CONVERT_WINDOWS_PATHS=1
如果您的路径错误,这应该有帮助。 / \