Amazon SNS - Kiedy i jak używać? Przewodnik po pub/sub

Jeremi Andrzejewski 6 maja 2026
Schemat architektury aplikacji z AWS SNS jako centrum powiadomień, łączącym stronę WWW, S3, IAM i różne punkty końcowe (Email, SQS, Lambda, API, Push, SMS).

Spis treści

Amazon SNS to jedna z tych usług, które porządkują architekturę dopiero wtedy, gdy system zaczyna rosnąć i trzeba szybko rozsyłać zdarzenia do wielu odbiorców naraz. W praktyce sprawdza się przy alertach, eventach backendowych, powiadomieniach dla zespołu i integracjach, w których jeden producent ma uruchomić kilka niezależnych reakcji. W tym artykule pokazuję, jak działa ten mechanizm, kiedy wybrać wariant standardowy albo FIFO i gdzie SNS ma przewagę nad kolejką czy event bussem.

Amazon SNS porządkuje rozsyłanie zdarzeń do wielu odbiorców

  • Amazon SNS działa w modelu pub/sub, czyli jeden nadawca może uruchomić wiele reakcji po stronie odbiorców.
  • Standard pasuje do prostego fanoutu i dużego tempa, a FIFO do scenariuszy, w których liczy się kolejność i deduplikacja.
  • Usługa wspiera m.in. Lambda, SQS, HTTP/S, e-mail, SMS, mobile push i Kinesis Data Firehose.
  • Jedna wiadomość może mieć maksymalnie 256 KB, a w batchu wyślesz do 10 komunikatów.
  • W produkcji bardzo pomagają filtry subskrypcji, DLQ, retry i szyfrowanie KMS.
  • W backendzie i DevOpsie SNS zwykle działa najlepiej jako warstwa dystrybucji zdarzeń, a nie jako magazyn danych.

Schemat przepływu danych w AWS: Klient wysyła żądanie do Application Load Balancer, które trafia do AWS Fargate

Jak działa Amazon SNS i kiedy ma sens

Patrzę na SNS przede wszystkim jak na usługę pub/sub, czyli publish-subscribe: publikujesz komunikat do tematu, a subskrybenci dostają go wtedy, gdy ich reguły na to pozwalają. To nie jest klasyczna kolejka, która ma trzymać zadania do późniejszego odczytu. SNS sam z siebie służy do szybkiej dystrybucji, dlatego tak dobrze pasuje do sytuacji, w których jedno zdarzenie ma uruchomić kilka niezależnych reakcji, na przykład zapis do analityki, wysłanie alertu i wywołanie funkcji Lambda.

Najlepiej myśleć o nim jak o rozdzielaczu sygnałów w systemie. Producent nie musi wiedzieć, kto finalnie odbierze wiadomość, a nowy odbiorca może dołączyć bez zmiany kodu nadawcy. To bardzo wygodne w backendzie, ale od razu rodzi kolejne pytanie: czy wystarczy prosty temat standardowy, czy lepiej sięgnąć po FIFO?

Standard i FIFO, czyli kiedy wybrać który tryb

W codziennej pracy różnica między tymi trybami jest większa, niż wygląda na papierze. Standard daje większą swobodę i prostsze zastosowanie, ale trzeba zaakceptować możliwe duplikaty oraz kolejność typu best effort, czyli bez gwarancji ścisłego porządku. FIFO jest bardziej wymagający, ale pilnuje sekwencji i pomaga tam, gdzie kolejność zdarzeń ma znaczenie biznesowe.

Kryterium Standard FIFO
Kolejność Brak gwarancji ścisłego porządku Kolejność jest zachowana
Deduplikacja Nie jest celem trybu standardowego Obsługuje deduplikację przy odpowiednich identyfikatorach wiadomości
Zakres użycia Alerty, fanout, ogólne eventy i duży throughput Transakcje, stany zamówień, inventory, sekwencyjne przetwarzanie
Bezpośrednie kanały Szerokie wsparcie: SQS, Lambda, HTTP/S, e-mail, SMS, mobile push, Firehose Przede wszystkim kolejki SQS; inne kanały wymagają dodatkowej warstwy
Złożoność wdrożenia Niższa Wyższa, bo trzeba pilnować grup wiadomości i deduplikacji

Najważniejsza praktyczna różnica jest taka, że FIFO przydaje się wtedy, gdy kolejność naprawdę zmienia wynik biznesowy. Jeśli zlecenie, płatność albo zmiana stanu muszą przejść w określonej sekwencji, ten tryb ma sens. Jeśli chodzi tylko o szybkie powiadomienie kilku systemów, standard zwykle wystarcza i jest po prostu prostszy. Warto też pamiętać, że FIFO nie jest uniwersalnym zamiennikiem wszystkich kanałów, bo nie obsługuje bezpośrednio e-maila, SMS-a czy HTTP/S w taki sam sposób jak standard.

Po stronie wdrożenia ważniejsze jest już to, gdzie taki temat realnie podłączyć w systemie. I właśnie tu SNS pokazuje swoją największą wartość.

Gdzie SNS naprawdę pomaga w backendzie i DevOpsie

Najczęściej używam SNS w czterech sytuacjach. Po pierwsze, gdy trzeba natychmiast rozesłać alert z CloudWatch do zespołu albo do systemu on-call. Po drugie, gdy jedno zdarzenie w mikroserwisach ma trafić do kilku niezależnych konsumentów, bo billing, shipping i analytics nie powinny być ze sobą sprzęgnięte. Po trzecie, gdy potrzebuję prostego kanału do e-maila, SMS-a albo pusha w aplikacji mobilnej. Po czwarte, gdy chcę odpalić webhook albo Lambdę po konkretnym zdarzeniu.

  • Alerty operacyjne - dobre wtedy, gdy czas reakcji jest ważniejszy niż rozbudowana logika routingu.
  • Fanout w backendzie - jeden producer publikuje zdarzenie, a kilka usług reaguje niezależnie.
  • Powiadomienia z procesu DevOps - wdrożenie, nieudany pipeline, przekroczony próg metryki, nowy artefakt.
  • Komunikacja z użytkownikiem - SMS, e-mail i push, ale tu trzeba świadomie ocenić koszty i deliverability.

Jeśli potrzebujesz tylko buforu dla jednego konsumenta, SNS zwykle jest zbyt szerokie. Jeśli jednak chcesz rozdzielić reakcje na jedno zdarzenie bez pisania własnej warstwy rozsyłania, ten model naprawdę upraszcza architekturę. Z praktycznego punktu widzenia najwięcej zyskujesz wtedy, gdy przechodzisz od pojedynczego alertu do całego łańcucha automatyzacji.

Jak wdrożyć to bez typowych potknięć

Żeby wdrożenie nie zamieniło się w serię trudnych do diagnozy problemów, zaczynam od kilku prostych decyzji architektonicznych.

  1. Zdefiniuj zdarzenie - nie wysyłaj przypadkowego tekstu, tylko komunikat z jasnymi polami, na przykład typ, środowisko, priorytet i identyfikator obiektu.
  2. Wybierz typ topicu - standard, jeśli liczy się prostota i throughput; FIFO, jeśli kolejność i deduplikacja są biznesowo ważne.
  3. Dodaj subskrypcje i filtry - dzięki filtrom jeden topic może obsługiwać kilka zespołów albo kilku odbiorców bez zalewania ich wszystkimi wiadomościami.
  4. Ustaw DLQ - dead-letter queue, czyli kolejkę na wiadomości, których nie udało się dostarczyć po retry, to moja podstawowa siatka bezpieczeństwa.
  5. Włącz szyfrowanie i uprawnienia minimalne - topic z szyfrowaniem SSE korzysta z KMS, a publikowanie do takiego tematu wymaga HTTPS i Signature Version 4.
  6. Przetestuj ścieżki awaryjne - sprawdź duplikaty, opóźnienia, błędne filtry i zachowanie odbiorcy przy ponownej próbie.

W praktyce często dokładam też bardzo prosty test publikacji z Pythona, żeby szybko sprawdzić, czy topic, uprawnienia i subskrypcja naprawdę działają razem.

import boto3

sns = boto3.client("sns", region_name="eu-central-1")

response = sns.publish(
    TopicArn="arn:aws:sns:eu-central-1:123456789012:deployments",
    Message="Nowy build przeszedł testy i czeka na wdrożenie",
    Subject="CI/CD"
)

print(response["MessageId"])

Najważniejsza rzecz, o której łatwo zapomnieć: zmiany w filtrach subskrypcji mogą dochodzić nawet kilkanaście minut, więc jeśli coś nie przechodzi od razu, nie zawsze oznacza to błąd w kodzie. Często to po prostu opóźnienie propagacji ustawień, a nie problem z samą usługą. Z tego miejsca naturalnie przechodzimy do porównania SNS z usługami, które najczęściej konkurują o to samo miejsce w architekturze.

Jak SNS wypada na tle SQS i EventBridge

To porównanie jest ważne, bo w praktyce wiele zespołów myli te trzy usługi i zaczyna używać ich zamiennie. Ja patrzę na nie przez pryzmat roli: SNS rozsyła, SQS buforuje, a EventBridge routuje zdarzenia według reguł. Dopiero to rozróżnienie pozwala uniknąć architektury, która wygląda nowocześnie, ale działa ciężko i nieprzewidywalnie.

Cecha Amazon SNS Amazon SQS Amazon EventBridge
Model komunikacji Push do subskrybentów Pull z kolejki Routowanie po regułach
Trwałość wiadomości Brak trwałego magazynu po stronie topicu Wiadomości czekają, aż zostaną odebrane Zdarzenia są przetwarzane na bieżąco
Najlepsze zastosowanie Fanout, powiadomienia, alerty, integracje do wielu odbiorców Buforowanie pracy i izolowanie konsumenta od producenta Routowanie zdarzeń między systemami i usługami na podstawie reguł
Główna zaleta Szybkie rozsyłanie do wielu kanałów Stabilna kolejka robocza Elastyczne reguły i integracje
Na co uważać Duplikaty, brak magazynu, ograniczenia FIFO Jedna wiadomość trafia do jednego konsumenta Brak kolejności i inny model myślenia niż w klasycznym pub/sub

Moja praktyczna reguła jest prosta: SNS sprawdza się wtedy, gdy jedno zdarzenie ma trafić do wielu miejsc naraz, SQS wtedy, gdy chcesz bezpiecznie odłożyć pracę do przetworzenia, a EventBridge wtedy, gdy potrzebujesz bogatszego routingu i pracy na regułach. W wielu systemach najlepszy efekt daje duet SNS + SQS, bo producent publikuje raz, a każda usługa odbiera własną kopię bez sprzęgania się z innymi odbiorcami.

Jeśli chcesz wykrywać zdarzenia z wielu źródeł, korzystać z dopasowania po wzorcach i podpinać coraz więcej targetów bez modyfikowania producentów, EventBridge bywa wygodniejszy. Gdy potrzebujesz tylko trwałej kolejki roboczej dla jednego konsumenta, SQS jest prostsze. A gdy celem jest szybkie rozsyłanie komunikatów do wielu miejsc naraz, SNS pozostaje bardzo trafnym wyborem. Po tym porównaniu warto jeszcze uczciwie spojrzeć na ograniczenia, bo to one najczęściej wpływają na jakość wdrożenia.

Ograniczenia, które w praktyce robią największą różnicę

SNS jest bardzo użyteczne, ale nie jest bezwarunkowo wygodne. W architekturze produkcyjnej kilka drobiazgów robi tu realną różnicę i właśnie one zwykle wychodzą dopiero po pierwszym poważniejszym wdrożeniu.

  • Limit rozmiaru wiadomości - jedna wiadomość ma maksymalnie 256 KB. Większe payloady obsługuje się zwykle przez wzorzec z S3 i referencją do obiektu.
  • Batching - w jednym wywołaniu PublishBatch wyślesz do 10 wiadomości, więc przy dużym wolumenie liczy się też sposób wysyłki.
  • Kolejność i duplikaty - standard może dostarczać wiadomości poza kolejnością i więcej niż raz, więc konsumenci powinni być idempotentni, czyli bezpieczni przy ponownym przetworzeniu.
  • Filtry i propagacja - zmiany reguł filtrujących nie są natychmiastowe; w praktyce warto uwzględnić nawet kilkanaście minut na pełne wejście w życie.
  • Retry i awarie endpointów - dla HTTP/S można sterować polityką dostarczania, a dla SMTP, SMS i mobile push AWS stosuje wewnętrzne ponawianie przez 50 prób w około 6 godzin.
  • DLQ jest per subskrypcja - to ważne, bo awaria jednego odbiorcy nie powinna zatruwać całego topicu.
  • Kanały A2P - SMS, push i e-mail wymagają osobnej oceny kosztów i dostarczalności; nie traktowałbym ich jako darmowego dodatku do komunikacji między usługami.

Te ograniczenia nie dyskwalifikują SNS. One po prostu podpowiadają, że usługa działa najlepiej wtedy, gdy projektujesz ją świadomie, z myślą o semantyce wiadomości, a nie tylko o samym przesłaniu tekstu. To prowadzi do ostatniej rzeczy, którą zwykle sprawdzam przed uznaniem wdrożenia za gotowe.

Co zwykle decyduje o dobrze działającym wdrożeniu SNS

Najlepsze wdrożenia SNS mają wspólny wzorzec: pojedynczy, dobrze opisany temat zdarzeń, kilka jasno nazwanych subskrypcji, filtry po metadanych, DLQ dla wyjątków i konsumenci odporni na duplikaty. To brzmi banalnie, ale właśnie ta prostota najczęściej odróżnia architekturę, która skaluje się spokojnie, od tej, która po kilku miesiącach zamienia się w trudną do utrzymania sieć połączeń.

W backendzie i DevOpsie patrzę na SNS jak na warstwę dystrybucji, która pomaga uwolnić producenta od wiedzy o odbiorcach. Jeśli potrzebujesz bufora, idziesz w SQS. Jeśli potrzebujesz reguł routingu i wielu źródeł zdarzeń, rozważasz EventBridge. Jeśli natomiast chcesz szybko rozsyłać komunikaty do wielu konsumentów i kanałów, to właśnie tutaj SNS pokazuje pełnię swoich możliwości.

FAQ - Najczęstsze pytania

Amazon SNS (Simple Notification Service) to usługa pub/sub, która umożliwia wysyłanie wiadomości do wielu subskrybentów i kanałów (np. Lambda, SQS, e-mail, SMS) w oparciu o model publikuj-subskrybuj. Idealna do szybkiej dystrybucji zdarzeń i alertów.

Wybierz Standard dla prostego fanoutu, alertów i wysokiej przepustowości, gdzie kolejność i deduplikacja nie są krytyczne. FIFO jest lepsze, gdy potrzebujesz gwarancji kolejności i deduplikacji, np. dla transakcji czy stanów zamówień.

SNS sprawdza się w alertach operacyjnych z CloudWatch, jako warstwa dystrybucji zdarzeń w mikroserwisach (fanout), do powiadomień z procesów DevOps oraz do komunikacji z użytkownikiem (SMS, e-mail, push).

SNS rozsyła wiadomości do wielu odbiorców, SQS buforuje wiadomości dla jednego konsumenta, a EventBridge routuje zdarzenia na podstawie reguł. Często działają razem: SNS + SQS to popularny duet do rozdzielania pracy.

Główne ograniczenia to limit rozmiaru wiadomości (256 KB), brak gwarancji kolejności i możliwe duplikaty w trybie Standard, a także opóźnienia w propagacji zmian filtrów. Ważne jest też świadome zarządzanie DLQ i politykami retry.

Oceń artykuł

Ocena: 0.00 Liczba głosów: 0

Tagi

aws sns
amazon sns jak działa
amazon sns standard vs fifo
amazon sns zastosowania
amazon sns a sqs
Autor Jeremi Andrzejewski
Jeremi Andrzejewski
Jestem Jeremi Andrzejewski, doświadczonym twórcą treści i analitykiem branżowym, specjalizującym się w technologiach. Od ponad pięciu lat zajmuję się analizowaniem trendów w branży technologicznej oraz pisaniem artykułów, które mają na celu przybliżenie złożonych zagadnień w przystępny sposób. Moje zainteresowania obejmują nowe technologie, innowacje oraz ich wpływ na codzienne życie i biznes. W swojej pracy kładę duży nacisk na rzetelność i aktualność informacji. Staram się dostarczać czytelnikom obiektywne analizy oraz sprawdzone dane, które mogą pomóc im w podejmowaniu świadomych decyzji. Moim celem jest nie tylko informowanie, ale także inspirowanie do odkrywania możliwości, jakie niesie ze sobą rozwój technologii. Wierzę, że wiedza powinna być dostępna dla każdego, dlatego dokładam wszelkich starań, aby moje teksty były zrozumiałe i użyteczne.

Udostępnij artykuł

Napisz komentarz