带有 JAVA 和 Docker 工具箱的本地 AWS SAM

AWS SAM local with JAVA and Docker Toolbox

我想使用无服务器应用程序模型在本地测试我的 lambda 函数 (SAM) 他们在 AWS 文档中写道:

SAM Local leverages the docker-lambda Docker images to run your code in a sandbox that simulates the Lambda execution environment.

我在我的电脑上拉取了 docker 图片。我可以成功 运行 一个简单的 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 local
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 Local 与 Java 一起使用有什么错误?会不会是因为我的电脑没有 Hyper-V 而我正在使用 docker 工具箱,所以它不工作?..

here 你可以看到 Advanced sam docs 和 java.

这样的编译语言

这是 Sam local 中的一个错误.. 用新的修复了 update

如果您在 windows 中仍有问题,请尝试以下操作:

COMPOSE_CONVERT_WINDOWS_PATHS=1

如果您的路径错误,这应该会有所帮助。 / \