안녕하세요!
저번 시간에 소개 드렸던 S3에 업로드에 이어 업로드를 하면 Lambda 이벤트 함수를 발생시키는 방법에 대해 소개해 드려요.
AWS Lambda
람다는 AWS에서 가장 많이 사용하는 기능 중 하나로 익명 함수라고 합니다.
이름이 없는 함수로 한 번만 사용될 때 편리하게 사용됩니다.
또 서버리스 컴퓨팅으로 서버 없이 실행할 수 있는 장점이 있습니다.
IAM 사용자 권한 정책 추가
먼저 Lambda를 사용하기 위해서 사용자에게 권한을 추가해야 해요.
콘솔에서 IAM에서 서비스를 사용할 수 있게 사용자의 권한 추가 버튼을 누릅니다.
아직 권한을 만들지 않았거나 사용자를 만들지 않았다면 여기부터 시작해 주세요!
React로 AWS S3 연결해서 사진 올리는 방법(리액트)
권찬 정책 추가 페이지에서 람다를 사용할 수 있는 AWSLambda_FullAccess와 사용이 되었는지 확인할 수 있는 CloudWatchFullAccess를 추가합니다.
Lambda 생성
다음은 콘솔에서 람다로 넘어간 뒤 지역을 선택하고 함수를 생성합니다.
버킷과 람다가 서로 지역이 맞지 않으면 연결이 되지 않으니 참고해 주세요!
이름을 입력하고 함수 안에 사용자가 쓰고 싶은 코드에 따라 런타임을 선택하시면 됩니다.
저는 python 코드를 넣을 예정이라 3.12를 선택했습니다.
트리거 추가
함수를 생성하게 되면 다이어 그램 페이지가 나오는데 람다와 S3를 연결하기 위해 트리거 추가 버튼을 누릅니다.
여기서 사용 방법에 따라 고려해야 할 부분이 있어요.
- S3를 연결 했을 때 어떤 버킷과 연결 할 것인지
- Event types 어떤 행동을 했을 때 함수를 발동 할 것인지.
- Prefix : 행동할 대상 폴더를 정할 것인지
- Suffix : 행동할 대상의 확장자를 정할 것인지
저는 업로드를 했을 때 함수를 발생시키기 위해 PUT만 선택했습니다.
만약 삭제나 다른 행동을 했을 때 발생시키려면 다른 항목을 추가하시면 됩니다!
또 폴더 조건과 확장자 조건을 걸지 않고 빈칸으로 남기고 트리거를 추가했습니다.
CloudWatch 연결
다음은 함수가 실행이 되었는지 확인하기 위해 CloudWatch를 연결합니다.
또 만약 권한이 연결되어 있지 않다면 권한을 연결하면 끝!
코드 작성
코드 작성 페이지로 가시면 lambda_handler 함수가 정의되어 있는데 이벤트가 발생하면 돌아가는 코드라고 생각하시면 됩니다.
여기서 이벤트에 관한 모든 정보가 event 변수로 들어오고 이 변수를 가지고 사용자가 필요한 코드를 작성하시면 됩니다.
잘 실행되었는지 확인하기 위해 print 문을 따로 작성했습니다.
lambda 함수 발생 순서
- S3에 파일에 대한 액션 발생
- 설정한 조건이 맞다면 이벤트 발생
- Lambda_handler 함수 실행(파라미터 event, context)
Cloudwatch 로그 보기
함수가 잘 실행되었는지 확인해 보겠습니다.
저번 글에서 작성된 VSCode를 이용하여 S3에 파일을 업로드합니다.
그다음 콘솔에서 Cloudwatch로 이동하고 로그 탭의 로그 그룹으로 이동합니다.
다음 사용자의 람다 이름이 있는 로그를 누르고 확인하면 끝!
여기까지 AWS Lambda를 사용하여 파일 업로드할 때 이벤트 발생하는 방법이었습니다.
다음에 다른 정보로 찾아 뵙겠습니다!