Amazon Web Services 한국 블로그

AWS Lambda 자바 언어 지원 시작

많은 AWS 고객들이 AWS Lambda를 이용하여 깔끔하고 전향적인 애플리케이션을 만들고 있습니다. 문서나 이미지를 업로드 했을 때 처리나 AWS CloudTrail의 로그 처리, Amazon Kinesis의 실시간 데이터 처리 등에 활용되고 있습니다. 최근에 동기 데이터 처리가 가능해져서 Lambda는 모바일 및 웹 그리고 IoT 백엔드 클라우드 서비스로 각광을 받고 있습니다.

내부 메일링 리스트에서도 Lambda를 이용한 다양한 방법에 대한 토론이 있었는데, 많은 경우 전통적인 데이터 프로세스를 실제로 적용가능하다는 결론을 내렸습니다. 고객들 역시 호스팅이나 확장성의 관리에서 벗어나 애플리케이션에 집중할 수 있어서 매우 좋아하고 있습니다. 지금까지는 개발자들이 서버 기반 앱을 위한 자바스크립트 모듈인 Node.js를 이용해서 Lambda 함수를 만들었습니다.

자바(Java) 언어 지원
오늘 부터 Lambda 함수를 자바 언어를 통해 더 강력한 기능을 수행할 수 있게 되었습니다. 여기에 대해 많은 개발자들의 요구가 있었고, 이를 지원할 수 있게 되어 매우 기쁩니다. Lambda 개발자를 위한 계획 중 추가 프로그래밍 언어 지원의 첫 번째 장이 열린 것입니다.

여러분은 Javs 8 기반 코드를 작성할 수 있으며 (What’s New in JDK 8 참고), 이를 기반한 자바 라이브러리를 사용할 수 있습니다. AWS SDK for Java를 이용하여 AWS API를 호출할 수도 있습니다.

Lambda에 대한 두 가지 라이브러리를 제공합니다: aws-lambda-java-core: Lambda 함수 핸들러, 콘텍스트 객체, aws-lambda-java-events AWS 이벤트를 정의 (Amazon Simple Storage Service (S3), Amazon Simple Notification Service (SNS), Amazon DynamoDB, Amazon KinesisAmazon Cognito). 자세한 사용 방법은 Lambda programming model for Java 문서를 읽어보시면 됩니다.

Lambda 함수는 두 가지 방법을 이용할 수 있는데, 먼저 객체를 입출력하는 높은 수준의 모델(Java POJO나 프리미티브 입출력 형식 사용 가능)을 이용하는 것입니다.

public lambdaHandler( input, Context context) throws IOException; 
public lambdaHandler( input) throws IOException;

POJO를 사용하지 않거나, Lambda 시리얼리제이션 모델이 여러분의 요구를 충족하지 않는 경우, 스트림 모델을 쓸 수 있습니다.

public void lambdaHandler(InputStream input, OutputStream output, Context context) 
  throws IOException;

Lambda 함수가 정의한 클래스에는  인자가 없는 퍼블릭 컨스트럭터(public zero-argument constructor)나  정적 핸들러 메소드를 정의해야 합니다. 다른 방법으로 Lambda 코어 자바 라이브러리 내의 핸들러 인터페이스(RequestHandler::handleRequest or RequestStreamHandler::handleRequest)를 사용할 수도 있습니다.

패키징, 배포 및 업로드
현재 사용하는 개발 도구를 그대로 쓸 수 있습니다. 컴파일된 자바 코드를 Lambda에서 사용하시려면  ZIP 혹은 JAR 파일에 컴파일된 클래스 파일을 넣고 업로드하면 됩니다. (참고. Lambda 패키지 업로드 크기는 50MB로 제한되어 있음). 핸들러 함수는 자바 디렉토리 구조에 따라 구성되어 있어야 하며(예: com/mypackage/MyHandler.class), JAR 파일은 lib 서브 디렉토리에 있어야 합니다. 배포를 쉽게 하기 위해서는 Maven이나 Gradle같은 자바 개발 도구를 사용합니다.

ZIP 파일을 올릴 때는 “java8″이라고 지정해야 합니다. 만약 핸들러 인터페이스을 구현했다면, 클래스명을 넣어야 합니다. 그렇지 않다면 전체 메소드 레퍼런스를 입력합니다. (예: com.mypackage.LambdaHandler::functionHandler).

AWS Toolkit for Eclipse사용하기
AWS Toolkit for Eclipse 플러그인을 이용하면 자동으로 생성해서 ZIP 파일로 업로드할 수 있습니다. AWS 메뉴에서 Lambda 프로젝트를 만들 수 있습니다.

프로젝트에 대한 설명을 넣은 후 도구로 부터 템플릿을 생성할 수 있습니다.

함수를 만들고 나서 한번의 클릭으로 실행할 수 있습니다.

그리고 확인 가능합니다.

지금 부터 사용해 보기
바로 지금 부터 자바로 Lambda 함수를 실행해 볼 수 있습니다.

더 자세히 보시려면 Authoring Lambda Functions in Java 문서를 참고하세요.

Jeff;

이 글은 AWS Lambda Update – Run Java Code in Response to Events의 한국어 번역입니다. AWS Lambda에 대한 자세한 소개는 AWS Lambda – 클라우드에서 코드 실행을 참고하시기 바랍니다.