
build.gradle에서
라이브러리는 org.springframework.cloud:spring-cloud-config-server를 사용한다.
ext {
set('springCloudVersion', "Greenwich.SR1")
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
dependencies {
// ... 생략
// Spring Cloud Function 을 위한 의존성
implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws'
// AWS Lambda 에 배포하기 위한 의존성
implementation group: 'com.amazonaws', name: 'aws-lambda-java-core', version: '1.2.1'
// AWS Lambda 이벤트를 다루기 위한 의존성
implementation group: 'com.amazonaws', name: 'aws-lambda-java-events', version: '3.9.0'
}
Bean으로 등록되어야 한다. (@Component)Function, Consumer, Supplier와 같은 함수형 인터페이스를 구현해야 한다. @Component // 하나의 함수
public class StringCheck implements Function<StringRequest, StringResponse> {
@Override
public StringResponse apply(StringRequest stringRequest) {
String input = stringRequest.getInput();
if (input.length() != stringRequest.getLength()) {
return new StringResponse(false);
}
return new StringResponse(true);
}
}
@Getter
public class StringRequest {
private String input;
private int length;
}
@AllArgsConstructor
@Getter
public class StringResponse {
private boolean check;
}
implementation 'org.springframework.cloud:spring-cloud-starter-function-web'
요청 URL
- POST http://localhost:8080/
- POST http://localhost:8080/stringValidator
{
"input": "test",
"length": 6
}
{
"check": false
}
import org.springframework.cloud.function.adapter.aws.SpringBootStreamHandler;
public class LambdaHandler extends SpringBootStreamHandler {
}

SpringBootStreamHandler를 보면 InputStream과 OutputStream을 입력 받고 적절한 핸들러를 찾아서 실행하는 handleRequest를 확인할 수 있다.
zip 파일로 만들기 위해 build.gradle에 task 추가task buildZip(type: Zip) {
from compileJava
from processResources
into('lib') {
from configurations.runtimeClasspath
}
}
sudo ./gradlew buildZip 명령을 실행하면 ./build/distributions 디렉토리에 zip 파일이 생성된다.
해당 링크로 들어가서 람다 함수를 생성한다.

프로젝트 내의 Handler 클래스 위치를 입력한다. ([런타임 설정] 탭 > [Handler])

[구성] > [환경 변수] > [편집] 에서 환경 변수 수정하기
FUNCTION_NAME : 원하는 Bean 이름, MAIN_CLASS : main 메서드가 위치한 클래스명

[테스트] 탭에서
{
"input": "val",
"length": 3
}
위의 내용을 입력하고 테스트를 해보자
응답 결과를 확인해보자
원하는 응답을 확인할 수 있다.
틀린 문자열 길이를 입력했을 때 테스트를 해보자.
{
"input": "val",
"length": 5
}

성공 ~_~
진짜 진짜 감사해요!! 저 계속 이거 실패했는데 겨우 성공했어요!!!!