AWS

AWS Lambda Log 동적 변경

devfinger 2024. 11. 29. 09:45

1. Lambda 환경 변수 변경 방법

(1) AWS Management Console을 사용

  1. AWS Management Console에 로그인.
  2. Lambda 서비스로 이동.
  3. 해당 Lambda 함수를 선택.
  4. 구성(Configuration) 탭 > 환경 변수(Environment variables) 섹션으로 이동.
  5. LOG_LEVEL 값을 원하는 값으로 수정 (예: DEBUG, INFO, WARN, ERROR).
  6. 저장 후 Lambda 함수가 재실행될 때 새로운 값을 읽어옵니다.

(2) AWS CLI를 사용

AWS CLI를 사용하면 환경 변수를 명령줄에서 업데이트할 수 있습니다.
다음은 예제 명령입니다:

aws lambda update-function-configuration \
    --function-name MyLambdaFunction \
    --environment "Variables={LOG_LEVEL=DEBUG}"
 
  • --function-name: Lambda 함수 이름.
  • LOG_LEVEL=DEBUG: 원하는 로그 레벨.

(3) AWS SDK를 사용

Java, Python, or other languages로 AWS SDK를 활용하여 프로그래밍 방식으로 환경 변수를 업데이트할 수 있습니다.

Java 예제:

import software.amazon.awssdk.services.lambda.LambdaClient;
import software.amazon.awssdk.services.lambda.model.UpdateFunctionConfigurationRequest;

public class UpdateLambdaEnv {
    public static void main(String[] args) {
        LambdaClient lambdaClient = LambdaClient.create();

        UpdateFunctionConfigurationRequest request = UpdateFunctionConfigurationRequest.builder()
                .functionName("MyLambdaFunction")
                .environment(env -> env.variables(Map.of("LOG_LEVEL", "DEBUG")))
                .build();

        lambdaClient.updateFunctionConfiguration(request);
        System.out.println("Environment variable updated successfully.");
    }
}

2. Lambda 환경 변수 변경 시 주의사항

  • 환경 변수를 업데이트하면 Lambda 함수는 자동으로 새 버전을 배포하고, 이후 실행부터 새로운 환경 변수를 사용합니다.
  • 실행 중인 Lambda는 기존 환경 변수로 작동하며, 업데이트된 값은 새 요청부터 반영됩니다.

3. 환경 변수를 실시간으로 동적으로 변경하는 대안

(1) AWS Parameter Store 사용

AWS Systems Manager의 Parameter Store를 사용하면 환경 변수 값을 실시간으로 읽을 수 있습니다.

  1. Parameter Store 설정
    • AWS Management Console에서 Systems Manager > Parameter Store로 이동.
    • 새 매개변수 생성 (예: LOG_LEVEL).
    • 값: INFO, DEBUG 등.
  2. 코드에서 Parameter Store 값 읽기 AWS SDK를 통해 값을 읽어옵니다:
import software.amazon.awssdk.services.ssm.SsmClient;
import software.amazon.awssdk.services.ssm.model.GetParameterRequest;

public class LambdaHandler {
    public String getLogLevel() {
        SsmClient ssm = SsmClient.create();
        GetParameterRequest request = GetParameterRequest.builder()
                .name("LOG_LEVEL")
                .withDecryption(true)
                .build();
        return ssm.getParameter(request).parameter().value();
    }
}

 

    3. Parameter Store의 값 업데이트

  • Console, CLI, 또는 SDK를 사용해 실시간으로 값을 수정.
  • 예제 (CLI):
    bash
    코드 복사
    aws ssm put-parameter --name "LOG_LEVEL" --value "DEBUG" --overwrite

(2) AWS Secrets Manager 사용

Parameter Store와 유사하지만 민감한 데이터(예: 비밀번호, API 키 등)를 보호하기에 적합합니다. 설정 및 사용법은 Parameter Store와 비슷합니다.


4. CloudWatch Logs에서 실시간 동작 확인

Lambda 함수가 새 LOG_LEVEL 값을 반영하는지 확인하려면 CloudWatch Logs에서 로그를 모니터링합니다:

  1. Lambda 실행 이후 생성된 로그 그룹 (/aws/lambda/FunctionName)으로 이동.
  2. 로그 메시지에서 새로운 LOG_LEVEL 값에 따라 로그 레벨이 적용되는지 확인.

5. 요약

  • Lambda 환경 변수 LOG_LEVEL 값은 AWS Management Console, CLI, 또는 SDK를 통해 변경할 수 있습니다.
  • 실시간으로 동적으로 변경하려면 AWS Parameter Store 또는 Secrets Manager를 사용하여 값을 읽는 방법을 권장합니다.
  • CloudWatch Logs에서 로그 레벨 적용 여부를 확인하고, 필요하면 로그 보존 및 관리 정책을 설정합니다.

'AWS' 카테고리의 다른 글

Lambda Cold Start 해결 방법 (Snapstart)  (0) 2024.12.12
Lambda Cold Start 해결 방법  (0) 2024.12.12
CloudWatch Java 로그 작성 방법  (0) 2024.11.29
vpc flow logs, cloudwatch, cloudtrail  (0) 2024.11.28
Java Lambda template.yaml 관리  (0) 2024.11.18