하나의 메시지를 아주 많은 다수의 수신자에게 전송하고 싶을 때 직접 통합 방식을 사용할 수 있음
예) 구매 서비스 애플리케이션이 여러 수신 서비스에 메시지를 전송하며, 매번 새로운 수신 서비스를 추가해야 하고 통합의 생성 및 작성이 필요하기 때문에 번거로움
위의 방법 대신 Pub/Sub(Publish/Subscribe) 방법을 사용할 수 있음 즉, 구매 서비스가 메시지를 SNS Topic으로 전송해서 메시지를 게시하며 다수의 구독자가 존재한다면 각각의 구독자들은 SNS Topic으로부터 메시지를 수신하여 자신이 보관할 수 있음
Amazon SNS에서는 이벤트 제작자가 한 SNS Topic으로 메시지 하나를 보내며 원하는 수만큼 이벤트 수신자/구독자가 SNS Topic의 알림을 듣도록 할 수있어 각 구독자들은 Topic으로부터 메시지를 수신
메시지 필터링 기능이 있기는 하지만 기본적으로는 각각의 구독자가 Topic으로 전송된 모든 메시지를 수신함
각 Topic마다 최대 1천만명의 구독자를 가질 수 있는 큰 규모이며 Amazon SNS에서는 최대 10만개의 Topic을 가질 수 있음
Amazon SNS에서의 메시지 구독자는 SQS일 수도 있고 HTTP, HTTPS 백엔드일 수 있으며, 람다 함수이거나 이메일, 문자 메시지, 모바일 알림일 수 있음 HTTP나 HTTPS는 실패할 경우 몇 번을 더 시도해야 하는지 정할 수 있음
SNS integrates with a lot of AWS services
다양한 서비스들의 데이터나 알림을 직접 SNS로 보내지기 때문에 SNS는 AWS의 중심이 됨 예 1) SNS Topic으로 알림을 보내기 위한 경보인 CloudWatch 예 2) Auto Scaling Groups 알림 예 3) 버킷에서 이벤트가 발생할 때마다의 S3 버킷 예 4) 스택을 구축하는데 실패하는 등의 상태 변화가 있을 경우의 CloudFormation 템플릿
Amazon SNS – How to publish
Topic Publish (using the SDK) SNS로 메시지를 게시하기 위해서는 Topic Publish SDK를 사용하여 Topic을 생성하고 그 후에 하나 또는 다수의 구독을 생성하고 SNS Topic으로 게시하면 모든 구독자들은 자동으로 메시지를 수신하게 됨
Direct Publish (for mobile apps SDK) 모바일 앱 SDK에는 Direct Publish라는 방법이 있어 플랫폼 애플리케이션과 플랫폼 엔드포인트를 생성하고 플랫폼 엔드포인트로 게시하면 모바일 애플리케이션이 알림을 수신하는 여러 방법인 Google GCM, Apple APNS, Amazon ADM 등의 구독자 측면에서 작동
Amazon SNS – Security
Amazon SNS는 SQS와 동일한 종류의 보안을 가지므로 기본적으로는 전송 중 암호화를 제공하지만 KMS 키를 이용한 미사용 데이터 암호화와 고객이 암호화된 메시지를 SNS로 보내기를 원할 경우 고객 측 암호화도 제공
액세스 제어에 있어서는 IAM 정책을 사용하며 모든 SNS API들은 IAM 정책에 의해 규제됨
S3 버킷 정책과 매우 유사한 SNS 접근 정책을 정의할 수 있으며 SNS Topic에 대해 여러 계정에 걸쳐 접근 권한이 필요하거나 S3 이벤트 등의 다른 서비스가 Topic으로 메시지를 보내도록 허용할 때 유용