새로운 기능 – Amazon EventBridge에서 Amazon S3 이벤트 알림 사용
AWS는 2019년 중반에, 규모 관계없이 강력한 이벤트 중심 애플리케이션을 손쉽게 구축할 수 있는 Amazon EventBridge를 출시했습니다. 출시 이후 스키마 레지스트리, 이벤트 아카이빙 및 재생 기능, 리전 간 이벤트 버스 대상 지원, API 대상 등 모든 HTTP API로 이벤트를 전송할 수 있도록 지원하는 몇 가지 중요한 기능이 추가되었습니다. 매우 많은 대상 목록을 지원하며 이벤트의 패턴 매칭, 필터링 및 라우팅을 수행할 수 있는 기능을 갖춘 EventBridge는 매우 강력하고 유연한 아키텍처 구성 요소입니다.
S3 이벤트 알림
이제 EventBridge를 사용하여 S3 객체의 변경 사항에 효율적으로 빠르게 대응하는 애플리케이션을 더욱 쉽게 구축할 수 있게 되었습니다. 이 모델은 그 어느 때보다 빠르고 안정적이며 개발자에게 익숙한 새로운 ‘직접 연결’ 모델입니다. 더 이상 이벤트를 처리하기 위해 객체의 추가 복사본을 만들거나 특별한 단일 목적 코드를 작성할 필요가 없습니다.
그런데 이미 S3 객체의 변경 사항에 대응할 수 있는 능력은 충분히 있는데, 무엇 때문에 이 같은 기능을 추가하는지 궁금해 하는 분도 계실 것입니다. 2014년에 AWS는 SNS 주제, SQS 대기열 및 Lambda 함수에 대한 S3 이벤트 알림을 출시했습니다. 이 기능은 여전히 매우 강력한 기능이지만 엔터프라이즈 규모로 사용하려면 독립적으로 존재하는 여러 팀 간에 조율하고 동일한 객체 및 이벤트를 사용하는 애플리케이션 간에 조정해야 할 수 있습니다. 또한 이미 EventBridge는 CloudTrail 로그에서 S3 API 호출을 추출하여 패턴 매칭 및 필터링을 수행하는 데 사용할 수 있습니다. 다시 말하지만, 감사 및 로깅에 중점을 둔 많은 종류의 앱에 사용하기에 매우 강력하고 뛰어나지만, 저희는 늘 더욱 개선할 방법을 찾고 있습니다.
실제로 이제 EventBridge에 직접 전달하도록 S3 이벤트 알림을 구성할 수 있습니다. 이 새 모델은 다음과 같은 여러 가지 이점을 제공합니다.
고급 필터링 – 객체 크기, 키 이름 및 시간 범위를 비롯한 여러 가지 추가 메타데이터 필드를 필터링할 수 있습니다. 이는 적절한 작업 과정에 대한 결정을 내리는 데 필요한 추가 메타데이터를 얻기 위해 S3로 다시 호출을 전달해야 하는 Lambda 함수를 사용하는 것보다 더 효율적입니다. S3는 규칙과 일치하는 이벤트만 게시하므로 관심 있는 이벤트에 대해서만 요금을 지불하여 비용을 절감할 수 있습니다.
여러 대상 – API 대상을 통해 Step Functions, Kinesis Firehose, Kinesis Data Streams 및 HTTP 대상을 비롯한 18개의 AWS 서비스 중 선택한 AWS 서비스로 동일한 이벤트 알림을 라우팅할 수 있습니다. 이는 자체 팬아웃 메커니즘을 만드는 것보다 훨씬 쉬우며 독립적인 팀이 자체 이벤트 처리를 수행하려는 엔터프라이즈 규모의 환경을 지원하는 데 유용합니다.
빠르고 신뢰할 수 있는 호출 – 패턴이 빠르게 직접적으로 매칭되고 대상이 호출됩니다. S3는 EventBridge에 이벤트를 최소 한 번 전송하므로 애플리케이션의 신뢰성이 더욱 높아집니다.
또한 이벤트를 아카이빙하고 리플레이하는 기능을 비롯하여 다른 EventBridge 기능을 활용할 수도 있습니다. 이렇게 하면 오류가 발생한 경우나 이벤트 버스에 새 대상을 추가하는 경우 이벤트를 다시 처리할 수 있습니다.
시작하기
몇 분 안에 바로 시작할 수 있습니다. 먼저 S3 버킷(이 예에서는 jbarr-public) 중 하나에서 EventBridge 알림을 사용하도록 설정합니다. S3 콘솔을 열고 내 버킷을 찾은 다음 속성(Properties) 탭을 열고 아래로 스크롤하여 이벤트 알림(Event notifications)으로 이동한 후 편집(Edit)을 클릭합니다.
켜기(On)를 선택하고 변경 사항 저장(Save changes)을 클릭하면 준비가 다 된 것입니다.
이제 EventBridge 콘솔을 사용하여 규칙을 만듭니다. 늘 그렇듯 이름과 설명을 입력하여 시작합니다.
그런 다음 버킷과 원하는 이벤트와 일치하는 패턴을 정의합니다.
각각의 패턴은 하나 이상의 버킷 및 하나 이상의 이벤트를 매칭할 수 있습니다. 지원되는 이벤트는 다음과 같습니다.
객체 생성됨
객체 삭제됨
객체 복원 시작됨
객체 복원 완료됨
객체 복원 만료됨
객체 태그 추가됨
객체 태그 삭제됨
객체 ACL 업데이트됨
객체 스토리지 클래스 변경됨
객체 액세스 계층 변경됨
그런 다음 기본 이벤트 버스를 선택하고 그 대상을 내 Amazon 이메일 주소에 메시지를 게시하는 SNS 주제(BucketAction)로 설정합니다.
생성(Create)을 클릭하면 모든 설정이 완료됩니다. 테스트하려면 버킷에 파일을 업로드하고 메시지를 기다리기만 하면 됩니다.
일부 따옴표를 제거하고 서식을 지정하면, 이 메시지에는 이벤트에 대한 흥미롭고 연관성이 높은 모든 정보가 포함되어 있으며 다음과 같이 표시됩니다.
초기 이벤트 패턴은 매우 단순했고 버킷 이름만 매칭했습니다. 콘텐츠 기반 필터링을 사용하여 더 복잡하고 흥미로운 패턴을 작성할 수 있습니다. 예를 들어 숫자 매칭을 사용하여 1MB보다 작은 객체의 이벤트를 매칭하는 패턴을 설정할 수 있습니다.
또는 접두사 매칭을 사용하여 버킷의 ‘하위 폴더’(실제로는 존재하지 않음)에 업로드된 객체를 찾는 패턴을 설정할 수 있습니다.
"object": {
"key" : [{"prefix" : "uploads/"}]
}]
}
이 모든 기능을 아카이브/리플레이를 포함한 모든 기존 EventBridge 기능과 함께 사용할 수 있습니다. 각 규칙에 대한 CloudWatch 지표에 액세스할 수도 있습니다.
정식 출시
이 기능은 지금 이용 가능하며 오늘부터 모든 상용 AWS 리전에서 사용을 시작할 수 있습니다. 규칙과 일치하는 이벤트 1백만 개당 1 USD를 지불하면 됩니다. 자세한 내용은 EventBridge 요금 페이지를 참조하세요.
– Jeff
Leave a Reply