AWS Lambda 컨텍스트 객체(Java) - AWS Lambda

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Lambda 컨텍스트 객체(Java)

Lambda는 함수를 실행할 때 컨텍스트 객체를 핸들러.에 전달합니다. 이 객체는 호출, 함수 및 실행 환경에 관한 정보를 제공하는 메서드 및 속성들을 제공합니다.

컨텍스트 메서드
  • getRemainingTimeInMillis() – 실행 시간이 초과되기까지 남은 시간(밀리초)을 반환합니다.

  • getFunctionName() – Lambda 함수의 이름을 반환합니다.

  • getFunctionVersion() – 함수의 버전을 반환합니다.

  • getInvokedFunctionArn() – 함수를 호출할 때 사용하는 Amazon 리소스 이름(ARN)을 반환합니다. 호출자가 버전 번호 또는 별칭을 지정했는지 여부를 나타냅니다.

  • getMemoryLimitInMB() – 함수에 할당된 메모리의 양을 반환합니다.

  • getAwsRequestId() – 호출 요청의 식별자를 반환합니다.

  • getLogGroupName() – 함수에 대한 로그 그룹을 반환합니다.

  • getLogStreamName() – 함수 인스턴스에 대한 로그 스트림을 반환합니다.

  • getIdentity() – (모바일 앱) 요청을 승인한 Amazon Cognito 자격 증명에 대한 정보를 반환합니다.

  • getClientContext() – (모바일 앱) 클라이언트 애플리케이션이 Lambda에게 제공한 클라이언트 컨텍스트를 반환합니다.

  • getLogger() – 함수에 대한 로거 객체를 반환합니다.

다음 예제에서는 컨텍스트 객체를 사용하여 Lambda 로거에 액세스하는 함수를 보여 줍니다.

Handler.java
package example; import com.amazonaws.services.lambda.runtime.Context import com.amazonaws.services.lambda.runtime.RequestHandler import com.amazonaws.services.lambda.runtime.LambdaLogger ... // Handler value: example.Handler public class Handler implements RequestHandler<Map<String,String>, String>{ Gson gson = new GsonBuilder().setPrettyPrinting().create(); @Override public String handleRequest(Map<String,String> event, Context context) { LambdaLogger logger = context.getLogger(); String response = new String("200 OK"); // log execution details logger.log("ENVIRONMENT VARIABLES: " + gson.toJson(System.getenv())); logger.log("CONTEXT: " + gson.toJson(context)); // process event logger.log("EVENT: " + gson.toJson(event)); logger.log("EVENT TYPE: " + event.getClass().toString()); return response; } }

이 함수는 컨텍스트 객체를 JSON으로 직렬화하고 로그 스트림에 기록합니다.

예 로그 출력
START RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 Version: $LATEST ... CONTEXT: { "memoryLimit": 512, "awsRequestId": "6bc28136-xmpl-4365-b021-0ce6b2e64ab0", "functionName": "java-console", ... } ... END RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 REPORT RequestId: 6bc28136-xmpl-4365-b021-0ce6b2e64ab0 Duration: 198.50 ms Billed Duration: 200 ms Memory Size: 512 MB Max Memory Used: 90 MB Init Duration: 524.75 ms

컨텍스트 객체에 대한 인터페이스는 aws-lambda-java-core 라이브러리에서 사용할 수 있습니다. 이 인터페이스를 구현하여 테스트용 컨텍스트 클래스를 만들 수 있습니다. 다음 예제에서는 대부분의 속성 및 작업 테스트 로거에 대해 더미 값을 반환하는 컨텍스트 클래스를 보여 줍니다.

src/test/java/example/.java TestContext
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.CognitoIdentity; import com.amazonaws.services.lambda.runtime.ClientContext; import com.amazonaws.services.lambda.runtime.LambdaLogger public class TestContext implements Context{ public TestContext() {} public String getAwsRequestId(){ return new String("495b12a8-xmpl-4eca-8168-160484189f99"); } public String getLogGroupName(){ return new String("/aws/lambda/my-function"); } ... public LambdaLogger getLogger(){ return new TestLogger(); } }

로깅에 대한 자세한 내용은 AWS Lambda 함수 로깅(Java) 단원을 참조하세요.

샘플 애플리케이션의 컨텍스트

이 안내서의 GitHub 저장소에는 컨텍스트 객체 사용을 보여주는 샘플 애플리케이션이 포함되어 있습니다. 각 샘플 애플리케이션에는 간편한 배포 및 정리를 위한 스크립트, AWS Serverless Application Model(AWS SAM) 템플릿 및 지원 리소스가 포함되어 있습니다.

Java의 샘플 Lambda 애플리케이션
  • java17-examples – Java 레코드를 사용하여 입력 이벤트 데이터 객체를 나타내는 방법을 보여주는 Java 함수입니다.

  • java-basic – 단위 테스트 및 변수 로깅 구성을 사용하는 최소한의 Java 함수 모음입니다.

  • java - Amazon API Gateway, Amazon SQS 및 Amazon Kinesis와 같은 다양한 서비스의 이벤트를 처리하는 방법에 대한 스켈레톤 코드가 포함된 Java 함수 모음입니다. 이러한 함수는 최신 버전의 aws-lambda-java-events라이브러리 (3.0.0 이상) 를 사용합니다. 이러한 예는 AWS SDK를 종속 항목으로 요구하지 않습니다.

  • s3-java – Amazon S3의 알림 이벤트를 처리하고 JCL(Java Class Library)을 사용하여 업로드된 이미지 파일의 썸네일을 생성하는 Java 함수입니다.

  • API Gateway를 사용하여 Lambda 함수 호출 — 직원 정보가 포함된 Amazon DynamoDB 테이블을 스캔하는 Java 함수입니다. 이후 Amazon 간편 알림 서비스를 사용하여 직원들에게 근무 기념일을 축하하는 문자 메시지를 보냅니다. 이 예제에서는 API Gateway를 사용하여 함수를 호출합니다.

모든 샘플 애플리케이션에는 단위 테스트용 테스트 컨텍스트 클래스가 있습니다. java-basic 애플리케이션은 로거를 가져오기 위해 컨텍스트 객체를 사용하는 방법을 보여줍니다. SLF4J 및 Log4J 2를 사용하여 로컬 단위 테스트를 위해 작동하는 로거를 제공합니다.