흰 스타렉스에서 내가 내리지

이벤트 기반 아키텍처, Lambda - S3 연결 예제 본문

AWS

이벤트 기반 아키텍처, Lambda - S3 연결 예제

주씨. 2023. 9. 20. 01:46
728x90

# 이벤트의 특성

> 명령이 아닌 관찰한 내용

- 명령 : 생성 주체가 대상에 행동에 대한 관심을 가지고 회신을 기다림 

- 이벤트 : 생성 주체는 대상의 행동에 관심이 없음 

 

> 구성요소

- 사건의 내용

- 사건의 발생 시간 및 주체 

- 불변성: 과거의 생성된 이벤트는 변경될 수 없음을 보장 

 

 

> AWS의 이벤트 

 

 

> Amazon EventBridge

 

"Amazon EventBridge는 자체 애플리케이션, 통합 Software-as-a-Service(SaaS) 애플리케이션 및 AWS 서비스에서 생성된 이벤트를 사용하여 이벤트 기반 애플리케이션을 대규모로 손쉽게 구축할 수 있는 서버리스 이벤트 버스입니다. "

 

 

> AWS의 이벤트 처리 

"이벤트 버스" 라는 곳에서 이벤트가 발생하면 "규칙"들이 지켜보고 있다가, 어 내꺼네 하면 AWS Lambda를 실행한다. 

 

 

 

"이벤트 버스"는 여러 이벤트들이 몰리는 일종의 통로이다. 

AWS에서는 수많은 이벤트들에 계속해서 발생한다. (EC2 Reboot, 유저 생성, 태그 변경, EC2 종료, ...)

Amazon EventBridge의 규칙이 자기가 원하는이벤트를 필터링하다가, 잡아서 그것을 처리한다. 

예를 들어, EC2가 시작되는 이벤트를 잡아서 처리하고 싶다고 하면, Amazon EventBridge 규칙이 이를 잡아서, SNS/SQS/Lambda 등의 일을 처리한다.

 

 

 

 

> AWS API Call via CloudTrail

- 미리 지정된 Event 이외에 상황을 처리할 때 사용

- CloudTrail의 로그를 통해 이벤트를 발생시키는 방법

- CloudTrail이 활성화 되어있어야 사용 가능

 

S3GetObject, EC2 생성 등 여러가지 API 호출이 되면, AWS CloudTrail을 통해서 AWS API Call을 만들어 이벤트 규칙을 trigger 한다.

 

 

> Amazon CloudWatch

CloudWatch 기반의 로그/메트릭 기반으로도 처리할 수 있다.

EC2 혹은 모바일 클라이언트, 외부서버 등에서 로그를 수집하고 있다가 메트릭 필터를 통해서 알람을 생성한 다음에 SNS로 처리할 수 있다. 

 

 

대표적인 아키텍처

S3에서 썸네일을 생성하는 아키텍처라고 하자. 

이미지 업로드를 하면, S3에서 객체 생성 이벤트를 통해서 람다를 실행한다. 

람다는 썸네일을 만든 다음에 S3에 저장하게 된다. 

 

 

 

 

# 실습

1. S3 버킷 생성

 

 

 

2. IAM-ROLE 생성

사용 사례는 람다

 

두 가지 권한 추가

역할 이름 지정해주고, 역할 생성

 

3. lambda

함수이름, 런타임 선택.

실행 역할에는 위에서 만들었던 IAM Role 선택.

함수 생성

 

함수 생성을 누르면 보이는 화면은 다음과 같다. 

 

코드가 담긴 zip 파일 업로드

zip 파일에는 index.js와 node_modules 가 있다. 

 

 

4. S3

방금 우리가 만든 버킷으로 가서, 속성 > 이벤트 알림 생성

접두사로 images/ 라고 하여 해당 경로에있는 객체로 알림을 제한한다.                                                                                                    

ㅇㅋ 완료

 

 

버킷에 images/ 라는 폴더를 만들고, 아무 사진이나 업로드 해본다. 

이제 람다 함수가 잘 실행되었는지 확인해 보자. 

람다 함수로 들어가서 '모니터링' -> 'CloudWatch Logs 보기'

resized/ 폴더가 생겼고, 리사이즈된 이미지가 잘 저장되었다. 

'AWS' 카테고리의 다른 글

Serverless 서비스 기반 지진 알람  (0) 2023.09.20
Serverless Framework  (0) 2023.09.20
디커플링, SQS, SNS  (0) 2023.09.20
S3 정적 호스팅  (0) 2023.09.18
Amazon S3 권한 관리  (0) 2023.09.18