S3에는 객체 생성이나, 수정, 삭제에 대해 이벤트를 발생하는 기능이 있다.
이런 기능을 사용해서, S3에 객체가 저장됐을 경우, Lamda를 사용해서 해당 객체의 데이터를 처리하는 등의 구조를 가져갈 수 있다.
본 글에서는 2가지 방법에 대해 설명
해당 방법은 console에서 이루어지기 때문에 직관적이지만, Lambda 코드는 따로 배포해야하는 불편함이 있다.
그런 불편함을 없애기 위해서 Servless Framework를 사용해서 Lambda 배포와 S3 이벤트 설정을 동시에 할 수 있다.
serverless.yml
파일을 아래와 같이 작성 후, Lambda가 처리할 코드 작성service: s3-event // lambda 이름
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs14.x
region: ap-northeast-2
timeout: 30
versionFunctions: false
iamManagedPolicies: arn:aws:iam::aws:policy/AmazonS3FullAccess # S3에 있는 파일에 접근하기위해 설정
functions:
s3event:
handler: s3tords.test # Lambda가 처리할 함수명
events:
- s3:
bucket: "s3-event-test" # 데이터를 저장하는 S3 Bucket
event: s3:ObjectCreated:* # S3 이벤트 유형
existing: true # 이미 존재하는 S3에 접근하기위한 설정
serverless deploy
serverless의 더 자세한 설정 방법은 문서 참조