AWS Lambda Java를 로컬로 실행할 수 있는 환경을 Spring Boot 기반으로 만들어 보았습니다.
6945 단어 람다AWSLambdaspring-bootAWS
넷 환경은 나쁘지만, 조금 만든 AWS Lambda Java의 확인을 하고 싶다고 하는 때에도 사용할 수 있을까 생각합니다.
결과
현재라고 handleRequest 메소드의 제1 인수는 String형과 Map형에 대응하고 있습니다. 우선 이것만 있으면 다이조브일 것이다.
사용법
거친 흐름은 다음과 같습니다.
AWS Lambda Java(실행 대상)에 대한 Jar 파일 생성 AWSLambdaRest에 적용 실제로 실행
AWS Lambda Java(실행 대상)의 Jar 파일 생성
샘플로서 이런 느낌의 AWS Lambda Java를 짜 봅니다.
AWSLambdaExample.javapublic class AwsLambdaExample implements RequestHandler<String, Object> {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Input result: " + input;
}
}
pom.xml에는 이런 식으로 jar-with-dependencies를 만들 수 있도록 설정해 둡니다.
pom.xml<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
AWSLambdaRest에 적용
작성한 Jar 파일을 AWSLambdaRest에 적용합니다. 예제에서는 extlib 폴더 아래에 Jar 파일을 배치하여 pom.xml 및 application.yml을 편집합니다.
우선 pom.xml에는 다음을 기술합니다.
pom.xml<dependency>
<groupId>jp.gr.java_conf.kojiisd</groupId>
<artifactId>aws-lambda-example</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${basedir}/extlib/aws-lambda-example-1.0-SNAPSHOT.jar</systemPath>
</dependency>
application.yml은 실행할 handleRequest가 속한 클래스를 지정합니다.
application.ymllambda-rest:
target: jp.gr.java_conf.kojiisd.AwsLambdaExample
실제로 실행
상기까지 실시할 수 있으면, 실행해 봅니다. Jar 파일을 작성하고 다음 명령을 실행하십시오.
$ java -cp target/aws-lambda-local-rest-0.0.1-SNAPSHOT.jar jp.gr.java_conf.kojiisd.AwsLambdaLocalRestApplication
결과 확인
시작되면 실제로 값을 보냅니다. RestClient를 사용하여 다음 JSON 코드를 전송합니다.
"test"
지나갔어요.
덧붙여서 이번 샘플에서는, 로그에 입력값을 출력하는 처리가 쓰여지고 있습니다만, 아래와 같은 손쉽게 구현하기 위해서, 로그에 출력하는 처리는 콘솔에 출력됩니다.
@Override
public LambdaLogger getLogger() {
return new LambdaLogger() {
@Override
public void log(String s) {
System.out.println(s);
}
};
}
물론 이번에 이용한 Jar 파일은 그대로 AWS Lambda Java에서도 실행 가능합니다.
요약
이번에 로컬로 AWS Lambda Java 시뮬레이션을 할 수 있는 환경을 만들어 보았습니다. 아직 실행 대상의 메소드 특정을 동적으로 할 수 없는 등 개선점은 있습니다만, 일단 이것으로 하고 싶은 일은 할 수 있게 되었습니다. 물론 풀릭, 환영합니다.
Reference
이 문제에 관하여(AWS Lambda Java를 로컬로 실행할 수 있는 환경을 Spring Boot 기반으로 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kojiisd/items/bb5af77fda91cedf56cf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
사용법
거친 흐름은 다음과 같습니다.
AWS Lambda Java(실행 대상)의 Jar 파일 생성
샘플로서 이런 느낌의 AWS Lambda Java를 짜 봅니다.
AWSLambdaExample.java
public class AwsLambdaExample implements RequestHandler<String, Object> {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Input result: " + input;
}
}
pom.xml에는 이런 식으로 jar-with-dependencies를 만들 수 있도록 설정해 둡니다.
pom.xml
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
AWSLambdaRest에 적용
작성한 Jar 파일을 AWSLambdaRest에 적용합니다. 예제에서는 extlib 폴더 아래에 Jar 파일을 배치하여 pom.xml 및 application.yml을 편집합니다.
우선 pom.xml에는 다음을 기술합니다.
pom.xml
<dependency>
<groupId>jp.gr.java_conf.kojiisd</groupId>
<artifactId>aws-lambda-example</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${basedir}/extlib/aws-lambda-example-1.0-SNAPSHOT.jar</systemPath>
</dependency>
application.yml은 실행할 handleRequest가 속한 클래스를 지정합니다.
application.yml
lambda-rest:
target: jp.gr.java_conf.kojiisd.AwsLambdaExample
실제로 실행
상기까지 실시할 수 있으면, 실행해 봅니다. Jar 파일을 작성하고 다음 명령을 실행하십시오.
$ java -cp target/aws-lambda-local-rest-0.0.1-SNAPSHOT.jar jp.gr.java_conf.kojiisd.AwsLambdaLocalRestApplication
결과 확인
시작되면 실제로 값을 보냅니다. RestClient를 사용하여 다음 JSON 코드를 전송합니다.
"test"
지나갔어요.
덧붙여서 이번 샘플에서는, 로그에 입력값을 출력하는 처리가 쓰여지고 있습니다만, 아래와 같은 손쉽게 구현하기 위해서, 로그에 출력하는 처리는 콘솔에 출력됩니다.
@Override
public LambdaLogger getLogger() {
return new LambdaLogger() {
@Override
public void log(String s) {
System.out.println(s);
}
};
}
물론 이번에 이용한 Jar 파일은 그대로 AWS Lambda Java에서도 실행 가능합니다.
요약
이번에 로컬로 AWS Lambda Java 시뮬레이션을 할 수 있는 환경을 만들어 보았습니다. 아직 실행 대상의 메소드 특정을 동적으로 할 수 없는 등 개선점은 있습니다만, 일단 이것으로 하고 싶은 일은 할 수 있게 되었습니다. 물론 풀릭, 환영합니다.
"test"
@Override
public LambdaLogger getLogger() {
return new LambdaLogger() {
@Override
public void log(String s) {
System.out.println(s);
}
};
}
이번에 로컬로 AWS Lambda Java 시뮬레이션을 할 수 있는 환경을 만들어 보았습니다. 아직 실행 대상의 메소드 특정을 동적으로 할 수 없는 등 개선점은 있습니다만, 일단 이것으로 하고 싶은 일은 할 수 있게 되었습니다. 물론 풀릭, 환영합니다.
Reference
이 문제에 관하여(AWS Lambda Java를 로컬로 실행할 수 있는 환경을 Spring Boot 기반으로 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kojiisd/items/bb5af77fda91cedf56cf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)