Amazon SNS
Messaging Cloud Practitioner Solutions Architect Associate Developer Associate

Amazon SNS

Amazon Simple Notification Service

W pełni zarządzany serwis powiadomień pub/sub. Wysyłaj wiadomości do milionów subskrybentów jednocześnie - e-mail, SMS, HTTP, Lambda, SQS.

Amazon SNS (Simple Notification Service) to serwis pub/sub (publish-subscribe) do wysyłania wiadomości i powiadomień. Tworzysz temat (topic), subskrybenci rejestrują się do niego, a gdy opublikujesz wiadomość - SNS automatycznie dostarcza ją do wszystkich subskrybentów. Subskrybentami mogą być kolejki SQS, funkcje Lambda, endpointy HTTP, adresy e-mail, numery SMS, a nawet aplikacje mobilne.

SNS jest fundamentem wzorca fan-out na AWS: jeden event trafia do SNS topic, a stamtąd rozchodzi się do wielu odbiorców jednocześnie. Np. zamówienie w sklepie online publikuje event do SNS, który jednocześnie: wysyła potwierdzenie e-mail klientowi, uruchamia Lambda do przetwarzania płatności, wrzuca wiadomość do SQS dla systemu magazynowego i loguje event w S3. Wszystko asynchronicznie i niezależnie.

Czy wiesz, ze...

Amazon SNS dostarczył ponad 100 trylionów wiadomości. Serwis obsługuje do 30 milionów subskrypcji na jeden temat i może wysyłać SMS-y do ponad 200 krajów. CloudWatch Alarms używają SNS pod spodem do wysyłania powiadomień e-mail.

Pro Tip

Używaj SNS Filter Policies, żeby subskrybenci otrzymywali tylko interesujące ich wiadomości. Zamiast tworzyć osobne tematy dla każdego typu eventu, utwórz jeden temat i filtruj po atrybutach. Np. filter {"event_type": ["order_created"]} na jednej subskrypcji i {"event_type": ["order_shipped"]} na drugiej.

Uwaga

Koszty SMS przez SNS bardzo sie roznia w zaleznosci od kraju ($0.00645/SMS w USA, $0.0365 w Polsce, $0.0930 w Japonii). HTTP/HTTPS endpointy nie maja wbudowanego retry z backoff. Jesli subscriber nie odpowiada, SNS ponawia wedlug ustalonej polityki i moze pominac wiadomosci. Max rozmiar wiadomosci to 256 KB. Dla duzych payloadow uzyj referencji do S3.

Amazon SNS to w pelni zarzadzany serwis pub/sub (publish-subscribe), ktory rozglasza wiadomosci do wielu subskrybentow jednoczesnie. Zamiast punkt-do-punkt (jak SQS), SNS realizuje wzorzec fan-out - jedna wiadomosc trafia do wielu odbiorcow naraz: Lambda, SQS, HTTP, email, SMS czy aplikacji mobilnych.

1

Tworzenie tematu (Topic)

Topic to kanal komunikacji - logiczny punkt, do ktorego publikujesz wiadomosci. Tworzysz Standard Topic (wysoka przepustowosc, best-effort ordering) lub FIFO Topic (scisla kolejnosc, dokladnie jednokrotne dostarczenie). Nazwa FIFO topicu musi konczyc sie na .fifo. Kazdy topic ma unikalny ARN, ktorego uzywasz do publikowania i subskrypcji.

2

Dodawanie subskrypcji

Subskrybujesz endpointy na topic: Lambda, SQS, HTTP/HTTPS webhook, email, SMS, aplikacja mobilna (push) lub Kinesis Data Firehose. Jeden topic moze miec do 12.5 miliona subskrypcji (Standard) lub 100 (FIFO). HTTP i email wymagaja potwierdzenia subskrypcji przez odbiorcow. Kazda subskrypcja moze miec wlasne ustawienia filtrowania i formatu.

3

Publikowanie wiadomosci

Producent wywoluje Publish z trescia (do 256 KB) i atrybutami wiadomosci. Mozesz publikowac do konkretnego topicu lub bezposrednio na numer telefonu (SMS). PublishBatch pozwala wyslac do 10 wiadomosci naraz. Wiadomosc moze zawierac rozne tresc dla roznych protokolow (np. krotki SMS i dlugi email) za pomoca MessageStructure=json.

4

SNS rozglasza wiadomosc (fan-out)

SNS dostarcza kopie wiadomosci do wszystkich aktywnych subskrypcji rownoczesnie. Dostarczenie do Lambda i SQS jest praktycznie natychmiastowe (milisekundy). Endpointy zarzadzane przez AWS (SQS, Lambda) maja polityke do 100,015 prob przez 23 dni; endpointy HTTP domyslnie maja tylko 3 proby (konfigurowalne). Kolejnosc dostarczenia miedzy subskrybentami nie jest gwarantowana.

5

Filtrowanie wiadomosci (Subscription Filter Policy)

Filter Policy pozwala subskrybentowi otrzymywac tylko wiadomosci spelniajace okreslone kryteria - na podstawie atrybutow wiadomosci lub body. Np. Lambda przetwarza tylko zamowienia z regionu "EU", a SQS kolejkuje tylko zamowienia powyzej 1000 PLN. Bez filter policy kazdy subskrybent dostaje kazda wiadomosc - filtrowanie po stronie SNS jest tansze niz filtrowanie w Lambda.

6

Dostarczenie i obsluga bledow

SNS stosuje rozne polityki retransmisji w zaleznosci od protokolu: Lambda i SQS maja 3 proby natychmiast, HTTP - progresywne backoff. Nieudane dostarczenia mozesz przekierowac do DLQ (kolejka SQS przypisana do subskrypcji). Delivery Status Logging do CloudWatch pozwala monitorowac procentowy sukces dostarczenia na kazdy protokol.

SNS jest prosty w uzyciu, ale kilka zaawansowanych funkcji moze znaczaco zredukowac koszty i uproscic architekture. Ponizej sprawdzone wzorce z produkcyjnych systemow.

Filtrowanie wiadomosci - redukuj niepotrzebne invocations

Bez filter policy Lambda subskrybujaca topic dostaje kazda wiadomosc i musi sama decydowac czy ja przetworzyc - platisz za kazda invokacje. Z filter policy na atrybutach SNS nie wywoluje Lambdy dla nieinteresujacych wiadomosci. Przy 1 miliona wiadomosci dziennie, gdzie Lambda potrzebuje tylko 10%, oszczedzasz 900k invocations dziennie. Filtruj po atrybutach, nie body - to szybsze.

Poczatkujacy

FIFO Topics - gdy kolejnosc ma znaczenie

FIFO Topics gwarantuja scisla kolejnosc i dokladnie jednokrotne dostarczenie. Wspieraja tylko SQS FIFO jako subskrybentow (nie Lambda bezposrednio). Limit to 300 publikacji/s (lub 3000 z batchingiem). Idealny wzorzec: FIFO Topic -> FIFO SQS -> Lambda. Uzywaj MessageGroupId do rownoleglego przetwarzania niezaleznych grup z zachowaniem kolejnosci wewnatrz grupy.

Zaawansowany

Konfiguracja retransmisji (Delivery Retry Policy)

Domyslna polityka HTTP to tylko 3 proby retransmisji - dla webhookow skonfiguruj wlasna politike (do 50 prob). Dla webhookow skonfiguruj wlasna politike: np. 5 prob z progresywnym backoff (1s, 2s, 4s, 8s, 16s). Dodaj DLQ do subskrypcji zeby lapac trwale nieudane dostarczenia. Dla Lambda i SQS polityka retransmisji jest prostsza - 3 natychmiastowe proby.

Zaawansowany

Cross-region - replikacja zdarzen

SNS nie ma wbudowanej replikacji miedzy regionami, ale mozesz to latwo zbudowac: SNS Topic w regionie A -> SQS w regionie B (cross-region subscription) -> Lambda w regionie B. Alternatywnie: SNS -> Lambda -> SNS w drugim regionie. To kluczowe dla architektur multi-region i disaster recovery. Pamietaj o kosztach transferu danych miedzy regionami.

Zaawansowany

Raw Message Delivery - unikaj podwojnej serializacji

Domyslnie SNS opakowuje wiadomosc w JSON envelope z metadanymi (MessageId, TopicArn, Timestamp). Dla subskrypcji SQS i HTTP mozesz wlaczyc Raw Message Delivery - konsument dostaje oryginalna tresc bez opakowania. Zmniejsza rozmiar wiadomosci i upraszcza parsowanie. Szczegolnie przydatne gdy producent wysyla juz sformatowany JSON.

Poczatkujacy

Archiwizacja wiadomosci z Kinesis Data Firehose

SNS moze dostarczac wiadomosci bezposrednio do Kinesis Data Firehose, ktory automatycznie zapisuje je do S3 w formacie JSON, Parquet lub ORC. To najtanszy sposob na dlugoterminowa archiwizacje wszystkich zdarzen bez budowania wlasnego pipeline. Mozesz pozniej analizowac je za pomoca Athena. Firehose buforuje dane i zapisuje w batchach co 1-5 minut.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z Amazon SNS bezposrednio w konsoli AWS.

Do czego sluzy Amazon SNS?

01

Powiadomienia systemowe (alarmy)

CloudWatch alarm wykrywa wysoki CPU na EC2 i publikuje do SNS topic. SNS wysyła e-mail do admina, SMS do dyżurnego i wiadomość do Slacka przez Lambda. Wielokanałowe powiadomienia.

02

Fan-out do wielu systemów

Jeden event (np. nowe zamówienie) trafia do SNS topic i rozchodzi się do: SQS dla fulfillment, Lambda dla e-maila, S3 dla audytu, Kinesis dla analityki. Luźno powiązane komponenty.

03

Powiadomienia push mobilne

Wysyłaj push notifications do aplikacji iOS (APNs) i Android (FCM) przez SNS Mobile Push. Obsługuje miliony urządzeń z jednym API.

04

Wysyłka SMS

Masowa wysyłka SMS-ów do klientów - potwierdzenia zamówień, kody weryfikacyjne (OTP), powiadomienia marketingowe. Obsługa ponad 200 krajów.

Co musisz wiedziec?

Topic (Temat)

Kanał komunikacji, do którego publikujesz wiadomości. Subskrybenci rejestrują się do tematu i automatycznie otrzymują wszystkie opublikowane wiadomości. Dwa typy: Standard i FIFO.

Subscription (Subskrypcja)

Połączenie między tematem a endpointem (e-mail, SQS, Lambda, HTTP, SMS). Jedna wiadomość w temacie = dostarczenie do WSZYSTKICH aktywnych subskrypcji.

Publisher (Wydawca)

Serwis lub aplikacja wysyłająca wiadomość do tematu SNS. Może to być Twój kod (SDK/CLI), alarm CloudWatch, event S3, event CloudFormation itp.

Fan-out

Wzorzec, w którym jedna wiadomość SNS jest dostarczana do wielu subskrybentów jednocześnie. Kluczowy pattern w architekturze event-driven i mikrousługach.

Filter Policy

Filtr JSON na subskrypcji, który decyduje które wiadomości dostarczyć. Pozwala subskrybentom otrzymywać tylko interesujące ich eventy z jednego tematu.

Architektura event-driven z SNS fan-out

Wzorzec fan-out, gdzie SNS rozglasza zdarzenia do wielu konsumentow jednoczesnie. Kazdy subskrybent przetwarza zdarzenie niezaleznie.

EventBridge / Aplikacja
EventBridge / Aplikacja Zrodlo zdarzen - EventBridge rule lub bezposrednia publikacja z aplikacji
Fan-out
Amazon SNS
Amazon SNS Topic rozglaszajacy wiadomosci do wszystkich subskrybentow z opcjonalnym filtrowaniem
AWS Lambda
AWS Lambda Przetwarzanie zdarzen w czasie rzeczywistym - walidacja, transformacja, logika biznesowa
Amazon SQS
Amazon SQS Buforowanie zdarzen do przetwarzania asynchronicznego z gwarancja dostarczenia
Email / SMS Powiadomienia uzytkownikow koncowych przez email lub wiadomosc tekstowa
Filter Policy na subskrypcji redukuje niepotrzebne wywolania Lambda nawet o 90%
SNS + SQS fan-out to standardowy wzorzec rozdzielania zdarzen do wielu konsumentow
Dla archiwizacji podlacz Kinesis Data Firehose jako subskrybenta - dane trafia do S3 automatycznie

Porownanie SNS vs SQS vs EventBridge

Cecha SNS SQS EventBridge
Wzorzec Pub/Sub (push) Queue (pull) Event bus (push, rules)
Dostarczanie Push do subscribentow Consumer pobiera Push do targetow
Filtrowanie Subscription filter policies Brak (consumer filtruje) Zaawansowane event patterns
Retencja Brak (fire-and-forget) Do 14 dni Do 24h (replay)
Fan-out Natywny (wiele subscribentow) Jeden consumer (lub z DLQ) Wiele targetow per rule
Najlepsze dla Powiadomienia, fan-out Buforowanie, decoupling Event-driven architecture, SaaS integracje

Ile kosztuje Amazon SNS?

Publikacja wiadomości

Płacisz za liczbę opublikowanych wiadomości (Publish API). Pierwszych 1 milion/miesiąc GRATIS.

$0.50 za milion wiadomości (po Free Tier)

Dostarczanie (HTTP/SQS/Lambda)

Dostarczanie do HTTP, SQS i Lambda jest DARMOWE. Płacisz tylko za Publish.

$0.00 za dostarczenie do SQS/Lambda

SMS

Płacisz za wysłane SMS-y. Ceny zależą od kraju docelowego i typu (transakcyjny vs promocyjny).

Polska: ~$0.04-0.07 za SMS

Free Tier

1 milion publikacji SNS + 1000 e-maili + 100 000 HTTP dostarczeń miesięcznie - permanentnie za darmo. SMS-y są płatne od pierwszej wiadomości.

Wystarczy na większość projektów dev i małe produkcje

Przyklady AWS CLI

Utwórz temat SNS

Tworzy nowy SNS topic i wyświetla jego ARN

aws sns create-topic --name moje-powiadomienia

Subskrybuj e-mail

Dodaje adres e-mail jako subskrybenta (wymaga potwierdzenia)

aws sns subscribe \
 --topic-arn arn:aws:sns:eu-central-1:123456789012:moje-powiadomienia \
 --protocol email \
 --notification-endpoint [email protected]

Opublikuj wiadomość

Wysyła wiadomość do wszystkich subskrybentów tematu

aws sns publish \
 --topic-arn arn:aws:sns:eu-central-1:123456789012:moje-powiadomienia \
 --subject "Alert: Wysoki CPU" \
 --message "Instancja i-0123abc ma CPU > 90% od 10 minut."

Quiz: Amazon SNS

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 3

1. Jaki wzorzec architektoniczny realizuje SNS?

2. Czy dostarczanie z SNS do SQS jest płatne?

3. Co to jest SNS Filter Policy?

Chcesz poznac Amazon SNS w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac Amazon SNS krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy