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번이 정답.
'클라우드(AWS) > DVA-C03' 카테고리의 다른 글
[AWS] Kinesis Steam의 Shard란? 쉽게 정리 (Provisioned Throughput ExceededException이 있을 경우) (0) | 2024.11.03 |
---|---|
[AWS] AMI를 다른 리전에서 실행하기 (+ 암호화 설정하기) (0) | 2024.11.01 |
[AWS] CloudWatch Metrics & Alarm과 Amazon SNS 연동하기 (Lambda) (0) | 2024.11.01 |
[AWS DVA-C02] 오답 풀이 #001 (RDS와 DynamoDB의 차이) (0) | 2024.11.01 |
[AWS] Amazon S3 Object Lambda란? 쉽게 정리 (S3 Object Lambda Access point) (0) | 2024.10.24 |