AWS Lambda와 S3 파일 업로드 트리거 구축 방법
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

S3 버킷에 파일이 업로드될 때 트리거되는 Lambda 함수 구축 방법

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

- AWS Lambda와 S3를 사용한 서버리스 아키텍처 개발자

- DevOps 엔지니어 및 클라우드 인프라 관리자

- 난이도: 중급~고급 (AWS CLI, IAM 역할, Python 기초 지식 필요)

핵심 요약

  • IAM 역할 생성AWSLambdaBasicExecutionRoleAmazonS3ReadOnlyAccess 정책을 반드시 포함해야 합니다.
  • Lambda 핸들러(lambda_handler)는 event 객체에서 bucketkey를 추출하여 S3 객체를 읽고, json.loads()로 파싱해야 합니다.
  • S3 버킷 알림 설정s3:ObjectCreated:* 이벤트와 .json 접두사 필터를 적용해야 하며, aws s3api put-bucket-notification-configuration 명령어로 구성합니다.

섹션별 세부 요약

1. 사전 준비 사항

  • AWS 계정Admin 권한이 필요하며, AWS CLIPython 3.11+이 설치되어 있어야 합니다.
  • IAM 역할trust.json 파일을 기반으로 생성되며, LambdaFunctionArn을 통해 S3 이벤트를 트리거합니다.

2. Lambda 함수 구조

  • 핸들러 함수(lambda_handler)는 eventRecords 배열에서 bucketkey를 추출합니다.
  • URL 인코딩된 키urllib.parse.unquote_plus()로 디코딩해야 하며, boto3를 통해 S3 객체를 읽습니다.
  • 구조화된 로깅을 위해 logging 모듈과 json.dumps(event, indent=2)를 사용해야 합니다.

3. 배포 및 설정

  • Lambda 함수zip 파일로 패키징되어 aws lambda create-function 명령어로 배포됩니다.
  • S3 버킷 알림aws s3api put-bucket-notification-configuration 명령어로 구성되며, .json 확장자만 트리거하도록 필터링합니다.
  • CloudWatch 로그를 통해 event 객체의 변경 사항을 추적할 수 있습니다.

4. 테스트 및 확장

  • 테스트용 JSON 파일aws s3 cp 명령어로 업로드되며, CloudWatch 로그를 통해 처리 결과를 확인합니다.
  • 다른 Lambda 함수 호출boto3.client("lambda").invoke()를 통해 가능하며, lambda:InvokeFunction 권한이 필요합니다.

5. 리소스 정리

  • 테스트 후 정리aws lambda delete-function, aws s3 rb, aws iam delete-role 명령어로 수행됩니다.

결론

- AWS CLI와 IAM 역할 설정은 서버리스 아키텍처의 핵심입니다.

- 구조화된 로깅(logging.info, json.dumps)과 URL 인코딩 처리는 디버깅 효율을 높입니다.

- S3 이벤트 필터링(suffix: .json)과 Lambda 함수 연동은 자동화 흐름을 안정적으로 유지합니다.

- 리소스 정리는 클라우드 비용 절감과 보안 강화에 필수적입니다.