[AWS] Amazon SNS 메시지 필터링이란? 쉽게 정리 (message filtering, Subscription Filter Policy)
Amazon SNS message filtering
Amazon SNS 메시지 필터링
SNS 메시지 필터링은 Topic(주제)에서 특정 Subscriber(구독자)가 모든 메시지를 받지 않고, 특정 조건에 맞는 메시지만 받을 수 있도록 필터링하는 기능이다.
이를 통해 각 Subscriber가 관심 있는 메시지만 선택적 수신하여, 불필요한 메시지 수신을 줄일 수 있습니다.
SNS 메시지 필터링 주요 개념
Message Attributes (메시지 속성)
SNS Publisher(제공자)가 메시지를 보낼 때, 메시지와 함께 속성(attributes)을 추가하는데, 이 속성을 통해서 필터링 규칙을 적용한다.
예를 들어, eventType
, priority
Subscription Filter Policy (구독 필터 정책 )
구독자(subscriber)는 필터 정책을 설정하여, 어떤 속성의 메시지만 수신할지 정의할 수 있다.
예시1) priority
가 "high" 일 경우, "구독자=리더"에게 전송.
예시2) priority
가 "low" 일 경우, "구독자=개발팀"에게 전송.
Topic에서 Subscription을 생성할 때 Subscription Filter Policy (특정 조건)를 선택할 수 있다.
SNS 메시지 필터링 예시
구성 요소
- Lambda - SNS Publisher (제공자)
- SNS Topic
- Topic Subscription - Subscription Filter Policy를 적용
- Subscriber1: "Info" 메시지만 수신
- Subscriber2: "Error" 메시지만 수신
- Topic Subscription - Subscription Filter Policy를 적용
🔩 Lambda (SNS Publisher)가 보내는 메시지:
메시지 예시1: "info" 이벤트
{
"Message": "Daily system check completed",
"MessageAttributes": {
"eventType": {
"DataType": "String",
"StringValue": "info"
}
}
}
메시지 예시2: "error" 이벤트
{
"Message": "Disk space low on server",
"MessageAttributes": {
"eventType": {
"DataType": "String",
"StringValue": "error"
}
}
}
🔩 Subscription Filter Policy 예시
"info" 메시지를 받기위한 Subscriber1를 위한 Subscription Filter Policy
{
"eventType": ["info"]
}
"error" 메시지를 받기위한 Subscriber2를 위한 Subscription Filter Policy
{
"eventType": ["error"]
}
https://docs.aws.amazon.com/sns/latest/dg/sns-message-filtering.html
😵 DVA-C03 문제
회사는 여러 파트너로부터 음식 주문을 받고 있습니다. 이 회사는 Amazon API Gateway API와 AWS Lambda 통합을 사용하는 마이크로서비스 애플리케이션을 운영하고 있습니다. 각 파트너는 API Gateway를 통해 customized API를 호출하여 주문을 보냅니다. 이 API 호출은 주문을 처리하는 공유된 Lambda 함수를 호출합니다.
Lambda 함수가 주문을 처리한 후, 파트너들에게 알림을 보내야 합니다. 각 파트너는 자신이 보낸 주문에 대한 업데이트만 받아야 합니다. 회사는 코드 변경을 최소화하면서 미래에 새로운 파트너를 추가하기를 원합니다.
이 요구 사항을 가장 확장 가능하게 충족시킬 솔루션은 무엇입니까?
- 각 파트너에 대해 별도의 Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 각 파트너의 SNS Topic로 메시지를 게시하도록 구성합니다.
- 각 파트너에 대해 별도의 Lambda 함수를 생성합니다. 각 파트너의 서비스 엔드포인트로 직접 알림을 보내도록 Lambda 함수를 구성합니다.
- Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 특정 속성을 가진 메시지를 SNS Topic로 게시하도록 구성합니다. 각 파트너를 해당 SNS Topic에 구독시키고, 필터 정책을 Topic의 구독에 적용합니다.
- 하나의 Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. 모든 파트너를 해당 SNS 주제에 구독시킵니다.
정답 & 오답
"정답. 3번"
Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 특정 속성을 가진 메시지를 SNS Topic로 게시하도록 구성합니다. 각 파트너를 해당 SNS Topic에 구독시키고, 필터 정책을 Topic의 구독에 적용합니다.
정답이 1번인줄 알았다. 하지만 3번이 정답.