728x90
반응형
# SprinbBoot 프로젝트를 AWS Lambda로 실행하기
1. 스프링 이니셜라이저를 통한 프로젝트 생성
AWS Lambda 같은 경우는 SpringBoot 2.x.x 버전과 java 11 까지 지원한다.
아래와 같은 옵션을 선택 후 진행한다.
GENERATE 버튼을 클릭하면 위의 설정한 옵션을 기반으로 .zip 파일로 프로젝트를 다운로드 할 수 있다.
압축을 해제 후 인텔리J나 VS코드로 폴더를 오픈한다.
2. build.gradle 설정
가장 처음 해야할일은 build.gradle 파일에 라이브러리를 추가해 줘야한다.
- 아래의 코드는 현재 설정된 build.gradle 내용이다. (참고만 하기)
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.12'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
//
//ext {
// set('springCloudVersion', "2021.0.7")
//}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
implementation 'org.projectlombok:lombok:1.18.26'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// 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'
implementation 'org.springframework.cloud:spring-cloud-starter-function-web'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:2021.0.7"
}
}
tasks.named('test') {
useJUnitPlatform()
}
// 빌드 후 코드를 zip 파일로 압축
task buildZip(type: Zip) {
from compileJava
from processResources
into('lib') {
from configurations.runtimeClasspath
}
}
3. 코드 작성
- 코드의 구성은 아래와 같다.
- 코드 내용을 알아보면 아래와 같다.
AdultJudge.java
package com.example.demo;
import org.springframework.stereotype.Component;
import java.util.function.Function;
@Component
public class AdultJudge implements Function<UserRequest, AdultJudgeResponse> {
@Override
public AdultJudgeResponse apply(UserRequest request) {
String name = request.getName();
if (request.getAge() > 20) {
return new AdultJudgeResponse(name + "은(는) 성인입니다.");
}
return new AdultJudgeResponse(name + "은(는) 성인이 아닙니다.");
}
}
AdultJudgeResponse.java
package com.example.demo;
public class AdultJudgeResponse {
private final String result;
public AdultJudgeResponse(String result) {
this.result = result;
}
public String getResult() {
return result;
}
}
DemoApplication.java (main 클래스)
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
LambdaHandlers.java
package com.example.demo;
import org.springframework.cloud.function.adapter.aws.SpringBootStreamHandler;
public class LambdaHandlers extends SpringBootStreamHandler {
}
UserRequest.java
package com.example.demo;
public class UserRequest {
private String name;
private int age;
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
4. 실행 후 로컬 테스트 with Postman
- 실행 URL : http://localhost:8080/adultJudge
- POST 로 호출
- JSON 내용은 아래와 같다.
{
"name": "Seungkim",
"age": 38
}
- 테스트 결과 화면은 아래와 같다.
여기까지 SpringBoot 프로젝트를 AWS Lambda로 실행하기 위한 첫번째 과정 이다.
- 끝 -
728x90
반응형
'AWS Lambda ƛ > Lambda & SpringBoot' 카테고리의 다른 글
SpringBoot 프로젝트를 AWS Lambda로 실행하기 (2) (0) | 2023.05.26 |
---|