[파이썬] 파이썬 애플리케이션의 AWS Lambda 모니터링 및 경고 설정

AWS Lambda는 서버리스 컴퓨팅 서비스로, 파이썬 애플리케이션을 실행하는 데 사용될 수 있습니다. 이 글에서는 AWS Lambda 함수의 실행 상태를 모니터링하고 필요한 경우 경고를 설정하는 방법을 알아보겠습니다.

1. AWS CloudWatch Logs 설정

AWS Lambda 함수의 로그를 검색하고 분석하기 위해 CloudWatch Logs를 사용할 수 있습니다. Lambda 함수가 자동으로 생성하는 로그 그룹을 확인하고 로그 그룹을 생성할 경우 다음과 같이 작성할 수 있습니다.

import boto3

log_group_name = 'my-lambda-log-group'

cloudwatch_logs = boto3.client('logs')

# 로그 그룹이 이미 있는지 확인
response = cloudwatch_logs.describe_log_groups(
    logGroupNamePrefix=log_group_name
)
if len(response['logGroups']) == 0:
    # 로그 그룹 생성
    response = cloudwatch_logs.create_log_group(
        logGroupName=log_group_name
    )

2. AWS CloudWatch 경고 설정

AWS Lambda 함수의 실행 상태에 대한 경고를 설정하기 위해 CloudWatch 경보를 사용할 수 있습니다. 다음은 Lambda 함수 실행 시간이 지정된 임계값을 초과할 경우 SNS를 통해 경고 메시지를 보내는 예제 코드입니다.

import boto3

function_name = 'my-lambda-function'
threshold = 5000  # 5000ms

cloudwatch = boto3.client('cloudwatch')

# 알람 규칙이 이미 있는지 확인
response = cloudwatch.describe_alarms(
    AlarmNames=["FunctionExecutionTimeAlarm"]
)
if len(response['MetricAlarms']) == 0:
    # 알람 생성
    response = cloudwatch.put_metric_alarm(
        AlarmName="FunctionExecutionTimeAlarm",
        AlarmDescription="Lambda function execution time alarm",
        ActionsEnabled=True,
        AlarmActions=['arn:aws:sns:us-east-1:123456789012:my-sns-topic'],
        MetricName='Duration',
        Namespace='AWS/Lambda',
        Statistic='Average',
        Dimensions=[
            {
                'Name': 'FunctionName',
                'Value': function_name
            },
        ],
        Period=60,  # 1분마다 체크
        EvaluationPeriods=1,
        Threshold=threshold,
        ComparisonOperator='GreaterThanThreshold',
    )

3. AWS Lambda 함수 구성

AWS Lambda 함수의 구성 파일에 위에서 생성한 로그 그룹과 경보를 사용할 수 있도록 추가해야 합니다. 이를 위해 template.yaml 파일을 수정하거나 AWS Management Console을 사용할 수 있습니다.

template.yaml 파일 수정

Resources:
  MyLambdaFunction:
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: my-lambda-function
      Handler: app.lambda_handler
      Runtime: python3.8
      Timeout: 60
      Environment:
        Variables:
          LOG_GROUP_NAME: !Ref MyLambdaLogGroup
      Policies:
        - AWSLambdaBasicExecutionRole
      Events:
        MyLambdaFunctionEvent:
          Type: Api
          Properties:
            Path: /my-lambda-api
            Method: get
      Tracing: Active

  MyLambdaLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: my-lambda-log-group

Outputs:
  MyLambdaFunctionArn:
    Description: "ARN of the Lambda function"
    Value: !Ref MyLambdaFunction

위의 예제에서는 Lambda 함수와 관련된 알맞은 위치에 항목을 추가해야 합니다.

AWS Management Console 사용

AWS Management Console에서 AWS Lambda 함수를 선택하고 “구성” 탭에서 “로그” 섹션으로 이동합니다. “CloudWatch 로그 그룹”에 로그 그룹 이름을 입력하고 “CloudWatch 경보” 섹션에서 알람 이름과 임계값, 작동 방식 등을 설정합니다.

이제 AWS Lambda 함수가 정상적으로 실행되는지 모니터링하고 필요한 경우 경고를 받을 수 있습니다.