기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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를 사용하여 로컬 단위 테스트를 위해 작동하는 로거를 제공합니다.