Я хочу протестировать свои лямбда-функции локально с помощью модели бессерверного приложения (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 .