IaaS/퍼블릭클라우드

(AWS) S3 버킷에 Event Trigger를 생성하기

armyost 2022. 3. 16. 07:06
728x90

S3 버킷의 Object 레벨에 변경사항이 있을경우 Event를 발생시켜 모니터링 혹은 Action을 취하는 방법을 정리하였다.

※ 버킷 레벨의 변경사항을 Event화 하는 방법은 그냥 CloudWatch에서 손쉽게 가능하다. 

버킷레벨의 Event 생성 관련 링크 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/EventBridge.html

 

EventBridge 사용 - Amazon Simple Storage Service

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

S3에는 아래와 같은 다양한 이벤트가 발생한다. 이를 이벤트화 시킬 수 있는 방법을 소개시키고자 한다.

  • 새 객체 생성 이벤트
  • 객체 제거 이벤트
  • 객체 이벤트 복원
  • RRS(Reduced Redundancy Storage) 객체 손실 이벤트
  • 복제 이벤트
  • S3 수명 주기 만료 이벤트
  • S3 수명 주기 전환 이벤트
  • S3 Intelligent-Tiering 자동 아카이브 이벤트
  • 객체 태깅 이벤트
  • 객체 ACL PUT 이벤트

크게 두가지 방법이 있는데,

 

1. S3의 Embedded된 Event Notification 사용

 

  1. [AWS Console-[Amazon S3] 콘솔을 엽니다.
  2. "버킷(Buckets)" 목록에서 이벤트를 사용 설정하려는 버킷의 이름을 선택합니다.
  3. "속성(Properties)"을 선택합니다.
  4. "이벤트 알림(Event Notifications)" 섹션으로 이동하여 "이벤트 알림 생성(Create event notification)"을 선택합니다.
  5. "일반 구성(General configuration)" 섹션에서 이벤트 알림을 설명하는 이벤트 이름을 지정합니다.
  6. 이벤트 이름(Event name)에 대한 설명을 입력합니다.
  7. "이벤트 유형(Event types)" 섹션에서 알림을 받을 이벤트 유형을 하나 이상 선택합니다.
    이벤트 유형 관련 링크 : https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html#supported-notification-event-types
  8. 대상(Destination) 섹션에서 이벤트 알림 대상을 선택합니다.
    Lambda 함수, SNS 주제 또는 SQS 대기열과 같은 대상 유형을 선택합니다.
  9. 또는 Amazon 리소스 이름(ARN)을 지정하려는 경우 [ARN 입력(Enter ARN)]을 선택하고 ARN을 입력합니다.

 

2. CloudWatch, CloudTrail 을 활용

  1. AWS CloudTrail 로 추적생성
    S3 버킷의 데이터 이벤트를 로깅하려면AWS CloudTrail그리고 EventBridge에서는 먼저 트레일을 만듭니다. A트레일은 (는) 직접 수행한 API 호출과 관련 이벤트를 캡처한 다음 지정된 S3 버킷에 로그 파일을 전송합니다. 기존 추적을 업데이트하거나 생성할 수 있습니다.
  2. [AWS Console]-[CloudWatch]-[CloudTrail] 콘솔을 엽니다.
  3. "추적 생성"을 선택합니다.
  4. "추적 이름(Trail Name)"에 추적 이름을 입력합니다.
  5. "스토리지 위치(Storage Location)"에서 새 S3 버킷 생성.
  6. "AWS KMS Alias"에서 적용할 KMS 키 이름 입력
  7. "다음(Next)"을 선택합니다.
  8. "이벤트 유형"에서 Data Event 선택이때 두가지 타입으로 나뉘는데, 모든 S3객체애 대한 이벤트를 만들것인지 특정 객체에 대한 이벤트를 만들것인지에 대한 것입니다.
    - 버킷의 모든 Amazon S3 객체에 대한 데이터 이벤트를 로그하려면 S3 버킷과 빈 접두사를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하면 추적이 해당 이벤트를 처리하고 기록합니다.
    - 버킷의 특정 Amazon S3 객체에 대한 데이터 이벤트를 로깅하려면 S3 버킷과 객체 접두사를 지정합니다. 이벤트가 해당 버킷의 개체에서 발생하고 개체가 지정된 접두사로 시작하면 추적이 이벤트를 처리하고 기록합니다.
  9. 각 리소스에 대해 기록 여부를 선택합니다.
  10. 다음(Next)을 선택합니다.
  11. 추적 생성을 선택합니다.
  12. CloudWatch에서 규칙을 생성하자. [AWS Console]-[CloudWatch]-[Rules]로 접속
  13. "Create Rule"을 클릭
  14. Event Source에서 Event Pattern으로 ServiceName을 "S3" Eventy Type을 "Object Level Operation"으로 선택
  15. 대상 버킷을 선택하고, 이벤트 Pattern을 통해서 Event를 유발할 Object를 서술. 완료.