AWS Lambda – Java 함수
이 장에서는 Java로 간단한 AWS Lambda 함수를 생성하는 방법을 자세히 이해하겠습니다.
Eclipse에서 JAR 파일 생성
AWS에서 람다 함수 생성 작업을 진행하기 전에 Eclipse에 대한 AWS 도구 키트 지원이 필요합니다. 동일한 설치에 대한 지침은 다음을 참조하십시오.Environment Setup 이 튜토리얼의 장.
설치가 완료되면 여기에 제공된 단계를 따르십시오.
1 단계
Eclipse IDE를 열고 다음을 사용하여 새 프로젝트를 만듭니다. AWS Lambda Java Project. 더 나은 이해를 위해 아래에 주어진 스크린 샷을 관찰하십시오.
2 단계
선택하면 Next, 아래 표시된 화면으로 리디렉션됩니다.
3 단계
이제 입력 유형에 대한 기본 코드가 생성됩니다. Custom. 클릭하면Finish 버튼을 누르면 아래와 같이 프로젝트가 생성됩니다.
4 단계
이제 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 내보내십시오. 고르다Java / JAR 파일에서 Export 마법사와 클릭 Next.
5 단계
이제 클릭하면 Next, 다음을 클릭 할 때 묻는 대상 폴더에 파일을 저장하라는 메시지가 표시됩니다.
파일이 저장되면 AWS 콘솔로 돌아가 Java 용 AWS Lambda 함수를 생성합니다.
6 단계
이제 .jar 사용하여 만든 파일 Upload 아래 스크린 샷과 같이 버튼-
Java 용 핸들러 세부 사항
Handler 이다 package name 과 class name. 핸들러를 자세히 이해하려면 다음 예제를 살펴보십시오.
예
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler
위의 코드에서 핸들러는 com.amazonaws.lambda.demo.LambdaFunctionHandler
이제 변경 사항을 테스트하고 출력을 살펴 보겠습니다.
자바의 컨텍스트 객체
AWS Lambda 실행과의 상호 작용은 컨텍스트를 사용하여 수행됩니다. 그것은 자바 내에서 사용되는 다음과 같은 방법을 제공합니다-
Sr. 아니요 | 컨텍스트 방법 및 설명 |
---|---|
1 | getMemoryLimitInMB() 이것은 람다 함수를 만드는 동안 지정한 메모리 제한을 제공합니다. |
2 | getFunctionName() 이것은 람다 함수의 이름을 제공합니다. |
삼 | getFunctionVersion() 이것은 실행중인 람다 함수의 버전을 제공합니다. |
4 | getInvokedFunctionArn() 그러면 함수를 호출하는 데 사용되는 ARN이 제공됩니다. |
5 | getAwsRequestId() 그러면 aws 요청 ID가 제공됩니다. 이 ID는 람다 함수에 대해 생성되며 고유합니다. 문제에 직면 한 경우 aws support incase에서 ID를 사용할 수 있습니다. |
6 | getLogGroupName() 이렇게하면 생성 된 aws lambda 함수와 연결된 aws cloudwatch 그룹 이름이 제공됩니다. iam 사용자에게 cloudwatch 로깅에 대한 권한이 없으면 null이됩니다. |
7 | getClientContext() 그러면 aws mobile sdk와 함께 사용할 때 앱 및 장치에 대한 세부 정보가 제공됩니다. 버전 이름 및 코드, 클라이언트 ID, 제목, 앱 패키지 이름과 같은 세부 정보를 제공합니다. null 일 수 있습니다. |
8 | getIdentity() 그러면 aws mobile sdk와 함께 사용할 때 Amazon cognito ID에 대한 세부 정보가 제공됩니다. null 일 수 있습니다. |
9 | getRemainingTimeInMillis() 지정된 시간 초과 후 함수가 종료 될 때 남은 시간 실행을 밀리 초 단위로 제공합니다. |
10 | getLogger() 이것은 컨텍스트 객체와 연결된 람다 로거를 제공합니다. |
이제 위에 제공된 코드를 업데이트하고 위에 나열된 일부 메서드의 출력을 관찰 해 보겠습니다. 더 나은 이해를 위해 아래 주어진 예제 코드를 관찰하십시오-
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
context.getLogger().log("Input: " + input);
System.out.println("AWS Lambda function name: " + context.getFunctionName());
System.out.println("Memory Allocated: " + context.getMemoryLimitInMB());
System.out.println("Time remaining in milliseconds: " + context.getRemainingTimeInMillis());
System.out.println("Cloudwatch group name " + context.getLogGroupName());
System.out.println("AWS Lambda Request Id " + context.getAwsRequestId());
// TODO: implement your handler
return "Hello from Lambda!";
}
}
위에 주어진 코드를 실행하면 아래와 같이 출력을 찾을 수 있습니다.
컨텍스트에 대한 로그
로그 출력을 볼 때 다음 출력을 관찰 할 수 있습니다.
Lambda 함수에 할당 된 메모리는 512MB입니다. 할당 된 시간은 25 초입니다. 위에 표시된대로 남은 시간은 밀리 초 단위 인 24961입니다. 따라서 Lambda 함수 실행에는 39 밀리 초에 해당하는 25000-24961이 사용됩니다. Cloudwatch 그룹 이름과 요청 ID도 위와 같이 표시됩니다.
Java에서 로그를 인쇄하기 위해 다음 명령을 사용했습니다.
System.out.println (“log message”)
CloudWatch에서도 동일합니다. 이를 위해 AWS 서비스로 이동하여CloudWatchservices 클릭 Logs.
이제 Lambda 함수를 선택하면 아래와 같이 로그 날짜가 표시됩니다.
Java에 로그인
Java에서 Lambdalogger를 사용하여 데이터를 로깅 할 수도 있습니다. 동일한 것을 보여주는 다음 예제를 관찰하십시오-
예
package com.amazonaws.lambda.demo;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("Input: " + input);
logger.log("AWS Lambda function name: " + context.getFunctionName()+"\n");
logger.log("Memory Allocated: " + context.getMemoryLimitInMB()+"\n");
logger.log("Time remaining in milliseconds: " + context.getRemainingTimeInMillis()+"\n");
logger.log("Cloudwatch group name " + context.getLogGroupName()+"\n");
logger.log("AWS Lambda Request Id " + context.getAwsRequestId()+"\n");
// TODO: implement your handler
return "Hello from Lambda!";
}
}
위에 표시된 코드는 다음과 같은 출력을 제공합니다.
CloudWatch의 출력은 다음과 같습니다.
Lambda 함수용 Java에서 오류 처리
이 섹션에서는 Lambda 함수용 Java에서 오류를 처리하는 방법을 설명합니다. 동일한 것을 보여주는 다음 코드를 관찰하십시오-
package com.amazonaws.lambda.errorhandling;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, String> {
@Override
public String handleRequest(Object input, Context context) {
throw new RuntimeException("Error from aws lambda");
}
}
오류 세부 정보는 json errorMessage로 형식 지정 Error from AWS Lambda. 또한ErrorType 과 stackTrace 오류에 대한 자세한 내용을 제공합니다.
위에 주어진 코드의 출력과 해당 로그 출력은 다음 스크린 샷과 같습니다.