Java로 Lambda 함수 구축

Java로 Lambda 함수 구축 (Building Lambda functions with Java)

AWS Lambda에서 Java 코드를 실행할 수 있어요. Lambda는 이벤트를 처리하도록 작성한 코드를 실행하는 Java용 런타임을 제공해요. 코드는 여러분이 관리하는 AWS Identity and Access Management(IAM) 역할의 AWS 자격 증명을 포함하는 Amazon Linux 환경에서 실행돼요.

출처: AWS Lambda 개발자 안내서

본문

Lambda는 다음 Java 런타임을 지원해요.

이름 식별자 운영 체제 지원 종료 날짜 함수 생성 차단 함수 업데이트 차단
Java 25 java25 Amazon Linux 2023 2029년 6월 30일 2029년 7월 31일 2029년 8월 31일
Java 21 java21 Amazon Linux 2023 2029년 6월 30일 2029년 7월 31일 2029년 8월 31일
Java 17 java17.al2023 Amazon Linux 2023 2029년 6월 30일 2029년 7월 31일 2029년 8월 31일
Java 11 java11.al2023 Amazon Linux 2023 2029년 6월 30일 2029년 7월 31일 2029년 8월 31일
Java 8 java8.al2023 Amazon Linux 2023 2029년 6월 30일 2029년 7월 31일 2029년 8월 31일
Java 17 java17 Amazon Linux 2 2027년 6월 30일 2027년 7월 31일 2027년 8월 31일
Java 11 java11 Amazon Linux 2 2027년 6월 30일 2027년 7월 31일 2027년 8월 31일
Java 8 java8.al2 Amazon Linux 2 2027년 6월 30일 2027년 7월 31일 2027년 8월 31일

AWS는 Java 함수를 위해 다음 라이브러리를 제공해요. 이 라이브러리는 Maven Central Repository에서 사용할 수 있어요.

빌드 정의에 이 라이브러리를 다음과 같이 추가해요.

Gradle

dependencies {
    implementation 'com.amazonaws:aws-lambda-java-core:1.2.2'
    implementation 'com.amazonaws:aws-lambda-java-events:3.11.1'
    runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.5.1'
    implementation 'software.amazon.lambda.durable:aws-durable-execution-sdk-java:1.0.1'
}

Maven

<dependencies>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-core</artifactId>
    <version>1.2.2</version>
  </dependency>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-events</artifactId>
    <version>3.11.1</version>
  </dependency>
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-log4j2</artifactId>
    <version>1.5.1</version>
  </dependency>
  <dependency>
    <groupId>software.amazon.lambda.durable</groupId>
    <artifactId>aws-durable-execution-sdk-java</artifactId>
    <version>1.0.1</version>
  </dependency>
</dependencies>

중요

private 필드, 메서드, 클래스 같은 JDK API의 비공개 구성 요소를 사용하지 마세요. 비공개 API 구성 요소는 어떤 업데이트에서도 변경되거나 제거될 수 있어 애플리케이션이 중단될 수 있어요.

커스텀 직렬화에 대한 자세한 내용은 Lambda Java 함수 직렬화 커스터마이즈를 참고하세요.

Java 함수 생성

  1. Lambda 콘솔을 열어요.
  2. 함수 생성(Create function) 을 선택해요.
  3. 다음 설정을 구성해요.
    • 함수 이름(Function name) : 함수 이름을 입력해요.
    • 런타임(Runtime) : Java 25 를 선택해요.
  4. 함수 생성(Create function) 을 선택해요.

콘솔은 Hello 라는 핸들러 클래스가 있는 Lambda 함수를 만들어요. Java는 컴파일 언어이므로 Lambda 콘솔에서 소스 코드를 보거나 편집할 수 없지만, 구성을 수정하고, 호출하고, 트리거를 구성할 수 있어요.

참고

로컬 환경에서 애플리케이션 개발을 시작하려면 이 가이드의 GitHub 저장소에서 사용할 수 있는 샘플 애플리케이션 중 하나를 배포해요.

Hello 클래스에는 이벤트 객체와 컨텍스트 객체를 받는 handleRequest 함수가 있어요. 이것이 함수가 호출될 때 Lambda가 호출하는 핸들러 함수예요. Java 함수 런타임은 Lambda에서 호출 이벤트를 받아 핸들러에 전달해요. 함수 구성에서 핸들러 값은 example.Hello::handleRequest 예요.

함수의 코드를 업데이트하려면 함수 코드가 포함된 .zip 파일 아카이브인 배포 패키지를 만들어요. 함수 개발이 진행됨에 따라 함수 코드를 소스 제어에 저장하고, 라이브러리를 추가하며, 배포를 자동화하고 싶을 거예요. 배포 패키지 생성으로 시작해 명령줄에서 코드를 업데이트하세요.

함수 런타임은 호출 이벤트와 함께 컨텍스트 객체를 핸들러에 전달해요. 컨텍스트 객체는 호출, 함수, 실행 환경에 대한 추가 정보를 담고 있어요. 환경 변수에서 더 많은 정보를 얻을 수 있어요.

Lambda 함수에는 CloudWatch Logs 로그 그룹이 함께 제공돼요. 함수 런타임은 각 호출에 대한 세부 정보를 CloudWatch Logs로 보내요. 호출 중 함수가 출력하는 로그도 중계해요. 함수가 오류를 반환하면 Lambda는 오류 형식을 지정해 호출자에게 반환해요.

더 알아보기 (Learn more)