클라우드(AWS)/DVA-C03

[AWS] Amazon SNS 메시지 필터링이란? 쉽게 정리 (message filtering, Subscription Filter Policy)

찌르비 2024. 10. 24. 11:41
반응형

 

 

Amazon SNS

 

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"  메시지만 수신

 

🔩 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

 

Amazon SNS message filtering - Amazon Simple Notification Service

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

 

 


😵 DVA-C03 문제 

회사는 여러 파트너로부터 음식 주문을 받고 있습니다. 이 회사는 Amazon API Gateway API와 AWS Lambda 통합을 사용하는 마이크로서비스 애플리케이션을 운영하고 있습니다. 각 파트너는 API Gateway를 통해 customized API를 호출하여 주문을 보냅니다. 이 API 호출은 주문을 처리하는 공유된 Lambda 함수를 호출합니다.
Lambda 함수가 주문을 처리한 후, 파트너들에게 알림을 보내야 합니다. 각 파트너는 자신이 보낸 주문에 대한 업데이트만 받아야 합니다. 회사는 코드 변경을 최소화하면서 미래에 새로운 파트너를 추가하기를 원합니다.
이 요구 사항을 가장 확장 가능하게 충족시킬 솔루션은 무엇입니까?

 

  1. 각 파트너에 대해 별도의 Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 각 파트너의 SNS Topic로 메시지를 게시하도록 구성합니다.
  2. 각 파트너에 대해 별도의 Lambda 함수를 생성합니다. 각 파트너의 서비스 엔드포인트로 직접 알림을 보내도록 Lambda 함수를 구성합니다.
  3. Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 특정 속성을 가진 메시지를 SNS Topic로 게시하도록 구성합니다. 각 파트너를 해당 SNS Topic에 구독시키고, 필터 정책을 Topic의 구독에 적용합니다.
  4. 하나의 Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. 모든 파트너를 해당 SNS 주제에 구독시킵니다.

정답 & 오답

더보기

"정답. 3번"

Amazon Simple Notification Service (Amazon SNS) Topic를 생성합니다. Lambda 함수가 특정 속성을 가진 메시지를 SNS Topic로 게시하도록 구성합니다. 각 파트너를 해당 SNS Topic에 구독시키고, 필터 정책을 Topic의 구독에 적용합니다.

 

 

정답이 1번인줄 알았다. 하지만 3번이 정답.

 

728x90
반응형