AWS SAM локально с JAVA и Docker Toolbox

Я хочу протестировать свои лямбда-функции локально с помощью модели бессерверного приложения (SAM) В документах AWS пишут:

SAM Local использует docker-lambda образы Docker для запустите свой код в песочнице, имитирующей среду выполнения Lambda.

Я вытащил образ докера на свой компьютер. Я смог успешно запустить простую лямбда-функцию Hello World.

Команда для локального запуска лямбда-функции:

$ docker run -v "$PWD/target/classes":/var/task lambci/lambda:java8 com.amazonaws.lambda.demo.LambdaFunctionHandler

результаты:

"Hello from Lambda!"

Код лямбда-функции, автоматически сгенерированный с помощью Eclipse Toolkit:

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. ( Может не стоило качать вручную?).

Я установил sam local в свои окна:

npm install -g aws-sam-local

создал файл конфигурации template.yaml.

    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

после этого я должен запустить свою лямбда-функцию:

$ 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 и я использую dockertoolbox? ..

здесь вы можете увидеть расширенные документы sam с компилированными языками, такими как java .


person Khan    schedule 05.12.2017    source источник


Ответы (1)


Это была ошибка в Sam local ... исправлена ​​в новом обновлении

Если у вас все еще есть проблема с Windows, попробуйте следующее:

COMPOSE_CONVERT_WINDOWS_PATHS=1

это должно помочь, если ваш путь неверен. / \

person Khan    schedule 11.12.2017