Amazon SNS( Simple Notification Service )

도은호·2025년 10월 10일
0

AWS SAA

목록 보기
34/46

SNS는 발행/구독(Pub/Sub) 기반의 완전관리형 알림·브로드캐스트 서비스. Topic으로 메시지를 발행하면 여러 구독자(SQS, Lambda, HTTP/S, 이메일, 모바일 푸시, SMS 등)에게 동시에 전달


핵심 개념

  • Topic: 메시지를 모아두는 채널. 퍼블리셔가 Publish 하면, 구독자들에게 전달.
  • Subscription(구독): Topic을 어디로 보낼지 정의. (SQS, Lambda, HTTP/S 엔드포인트, 이메일/이메일-JSON, SMS, 모바일 푸시 등)
  • Publisher(발행자): 애플리케이션, AWS 서비스(CloudWatch Alarms, S3 이벤트…), 사용자가 메시지를 보냄.
  • Message Attributes: 키/값 메타데이터. 필터링에 사용.

무엇이 좋은가?

  • 팬아웃(Fan-out): 한 번 발행 → 여러 소비자로 즉시 복제 전파(SQS 큐 여러 개, Lambda 여러 함수 등).
  • 서로 느슨하게 결합: 발행자와 구독자가 서로를 몰라도 됨(확장과 교체가 쉬움).
  • 완전관리형: 서버 없음, 고가용성/확장 자동.

자주 쓰는 패턴

  1. SNS → SQS 여러 개

    • 마이크로서비스별 큐로 병렬 처리. 장애 격리/재시도는 각 SQS에서 담당.
  2. SNS → Lambda

    • 이벤트 드리븐 처리(썸네일 생성, 슬랙 알림 등).
  3. 경보/알림

    • CloudWatch Alarm → SNS → 이메일/SMS/챗봇/웹훅(HTTP/S).
  4. 모바일 푸시/SMS

    • 플랫폼 애플리케이션(APNS/FCM) 연동, 국가별 SMS 발송.

메시지 필터링(Subscription Filter Policy)

  • 구독자별로 원하는 메시지만 받기.

  • 예:

    {
      "eventType": ["orderCreated", "orderUpdated"],
      "region": [{ "prefix": "ap-" }],
      "amount": [{ "numeric": [">=", 100] }]
    }

    eventType가 주문 관련이고, 리전이 ap-로 시작하며, 금액 ≥ 100인 메시지만 전달.


FIFO 토픽(정확히-한-번 + 순서 보장)

  • SNS FIFO: 메시지 순서(=MessageGroupId)중복 제거 보장.
  • 주로 SQS FIFO 구독과 조합(정확히-한-번 처리 파이프라인).

보안/운영

  • 암호화: 전송 시 TLS, 저장 시 KMS(SSE).
  • 액세스 제어: Topic 정책(리소스 기반 정책) + IAM. 계정 간 발행/구독 허용 가능.
  • 프라이빗 퍼블리시: VPC Interface Endpoint(PrivateLink) 로 인터넷 없이 퍼블리시.
  • 재시도/백오프: HTTP/S/Lambda로 전달 실패 시 자동 재시도(지수 백오프). 실패 메트릭과 로깅 제공.
  • 크기 제한: 메시지 본문 최대 256KB.
  • 배치 발행: PublishBatch(여러 메시지 한 번에) 지원.

요금 감각

  • 요청 수 + 프로토콜별 전송료 기반.
  • 이메일은 저렴, SMS/모바일 푸시는 국가·사업자별 차등.
  • SQS/Lambda로의 전달은 해당 서비스 요금 체계에 따름.

빠른 시작(CLI 예시)

# 1) 토픽 생성
aws sns create-topic --name my-topic

# 2) 구독(SQS 예시)
aws sns subscribe \
  --topic-arn arn:aws:sns:ap-northeast-2:111122223333:my-topic \
  --protocol sqs \
  --notification-endpoint arn:aws:sqs:ap-northeast-2:111122223333:my-queue

# 3) 메시지 발행
aws sns publish \
  --topic-arn arn:aws:sns:ap-northeast-2:111122223333:my-topic \
  --message '{"eventType":"orderCreated","amount":120,"region":"ap-northeast-2"}' \
  --message-attributes '{"eventType":{"DataType":"String","StringValue":"orderCreated"},"amount":{"DataType":"Number","StringValue":"120"},"region":{"DataType":"String","StringValue":"ap-northeast-2"}}'

SNS vs SQS 빠른 구분

  • SNS: 브로드캐스트(푸시). 한 메시지를 여러 곳으로 즉시 전달.
  • SQS: 버퍼/큐(풀링). 소비자가 나중에 가져가서 처리. 재시도·DLQ로 탄탄.

요약

  • SNS = 발행/구독 알림 허브.
  • Topic에 Publish → 여러 구독자(SQS/Lambda/HTTP/메일/SMS)동시 전달.
  • 필터링·FIFO·암호화·VPC 엔드포인트 등 운영 기능까지 갖춘 표준 이벤트 브로드캐스트 서비스.
profile
`•.¸¸.•´´¯`••._.• 🎀 𝒸𝓇𝒶𝓏𝓎 𝓅𝓈𝓎𝒸𝒽💞𝓅𝒶𝓉𝒽 🎀 •._.••`¯´´•.¸¸.•`

0개의 댓글