개요

AWS SNS는 구독중인 엔드포인트 또는 클라이언트에 메시지 전달 또는 전송을 조정 및 관리하는 웹서비스이다. SNS에는 Publisher(Producer)와 Subscriber(Consumer)가 존재한다. Publisher는 통신 채널이자 논리적 엑세스 포인트인 topic으로 메시지를 생성하여 송신하는 방식으로 Subscriber와 비동기 통신을 할 수 있다. Subscriber는 topic을 구독하여, 지원 가능한 다수의 프로토콜을 통해 메시지를 소비 또는 수신할 수 있다. Publisher에서 메시지를 생성하여 Topic에 제공하면,  SNS는 Subscriber에게 메시지를 "push"하는 방식으로 통신을 제공한다. 


SNS를 활용한 AWS 서비스 아키텍쳐 

System-to-System Messaging

SNS를 통해 Lambda, SQS, HTTP/S 엔드포인트, Event Fork Pipeline과 같은 시스템 Subscriber를 메시지 Publisher와 연동할 수 있다. 

SNS with Lambda

SNS와 Lambda를 연동하여 SNS 알림이 Lambda를 호출할 수 있다. Lambda가 구독중인 SNS 토픽에 대해 메시지가 생성되면, 생성된 메시지의 페이로드를 가지고 Lambda 함수가 호출되게 된다. Lambda는 메시지 내부의 정보를 조작하거나, 메시지 자체를 다른 서비스로 전송할 수 있다. 또한 SNS는 메시지 전송 상태를 Lambda 엔드포인트에 전송할 수 있다. 

SNS with SQS

SNS와 SQS를 함께 활용하면, 토픽에 메시지가 생성되었을 때 SQS가 구독할 수 있도록 설정할 수 있다. 이를 통해 메시지에 대해 즉각적 응답이 필요한 애플리케이션과, 대기열이 필요한 애플리케이션을 하나의 메시지로 동시에 사용할 수 있다. 

*SNS는 SQS FIFO와 호환되지 않음

SNS with HTTP/S Endpoints

SNS를 하나 이상의 HTTP/S 엔드포인트에 메시지를 보내도록 설정할 수 있다. SNS의 토픽으로 메시지가 생성되면, HTTP POST 요청을 통해 엔드포인트로 메시지를 전송할 수 있다. 

 

User Notifications

SNS with Mobile Push

SNS를 활용하여 모바일 장치에 직접 push 알림을 설정할 수 있다. 모바일 엔드포인트의 형태로 메시지 알림, 뱃지 알림, 알람 설정 등이 가능하다. 

SNS with SMS

SNS가 문자메시지/SMS 메시지를 보내도록 설정할 수 있다. 전화번호를 직접 지정하여 메시지를 보내는 것이 가능하며, 전화번호에 구독 설정을 한 후 구독한 토픽에 메시지를 생성하므로써 SMS 송신을 설정할 수 있다.