WAF 설정 Lambda 재귀 호출 문제 ‐ WAF 설정, Lambda 재귀 호출 문제 - lets-go-trip/treaXure-backend GitHub Wiki

1. WAF 설정 문제 해결

문제 상황

  • WAF 웹 ACL "treaxure-image-protection"이 CloudFront 배포와 연결되어 있지 않음에도 비용 발생
  • AWS WAF는 생성만 해도 기본 비용 부과됨

진단 과정

  1. 비용 내역에서 WAF 관련 항목 확인 (~0.16 USD)
  2. CloudFront 배포 확인 (WebACLId 없음)
  3. WAF 웹 ACL 목록 확인

문제 원인

  • 미사용 WAF 웹 ACL이 존재함 (실제 트래픽과 연결 없음)

해결 방법

  • WAF 웹 ACL 삭제:
aws wafv2 delete-web-acl \
  --name treaxure-image-protection \
  --scope CLOUDFRONT \
  --id <ACL_ID> \
  --lock-token <LOCK_TOKEN> \
  --region us-east-1
  • 삭제 확인:
aws wafv2 list-web-acls --scope CLOUDFRONT --region us-east-1

결과

  • WAF 제거로 추가 요금 방지
  • 해당 ACL은 핫링크 및 남용 방지를 위해 만들었으나 실제 적용되지 않았음

2. Lambda 재귀 호출 문제 해결

문제 상황

  • Lambda 함수(treaThumbFn)가 무한 루프에 빠짐
  • AWS에서 재귀 호출 알림 메일 수신

진단 과정

  1. Lambda 트리거 구성 확인
  2. SQS → Lambda 연결 구조 확인
  3. CloudWatch 로그와 지표 분석 (RecursiveInvocationsDropped)

문제 원인

  • 업로드된 이미지에 대해 Lambda가 썸네일 생성 후 다시 S3에 저장
  • 썸네일 저장도 이벤트로 인식되어 다시 Lambda 호출 → 재귀 루프 발생

해결 방법

  • S3 이벤트 설정에서 Prefix 필터로 제한:
aws s3api put-bucket-notification-configuration \
  --bucket treaxure-images \
  --notification-configuration '{
    "QueueConfigurations": [
      {
        "Id": "to-sqs",
        "QueueArn": "arn:aws:sqs:ap-northeast-2:[ACCOUNT_ID]:treaxure-image-queue",
        "Events": ["s3:ObjectCreated:*"],
        "Filter": {
          "Key": {
            "FilterRules": [
              {"Name": "Prefix", "Value": "images/soso/"},
              {"Name": "Suffix", "Value": ".webp"}
            ]
          }
        }
      }
    ]
  }'

결과

  • 오직 images/soso/ 경로에만 이벤트 발생
  • images/thumb/ 경로는 Lambda 트리거 제외
  • 무한 루프 방지, 비용 최적화
  • 테스트 업로드 시 썸네일 생성 정상 작동, 재귀 호출 없음

✅ 종합 결과

  • 불필요한 WAF 웹 ACL 삭제로 기본 요금 방지
  • Lambda의 무한 루프 방지로 예기치 않은 실행 비용 절감
  • 이미지 업로드 → SQS → Lambda → 썸네일 생성 흐름 정상화
  • CloudFront를 통해 원본 이미지 및 썸네일 접근 가능

AWS 리소스는 단순히 생성만 해도 과금되거나 트리거가 잘못 설정되면 불필요한 호출로 이어질 수 있음. 설정 이후 반드시 CloudWatch 및 비용 보고서를 주기적으로 점검해야 함.

⚠️ **GitHub.com Fallback** ⚠️