Wzorzec fan-out z SNS
Dowiedz się, jak stosować wzorzec komunikacji fan-out z Amazon SNS, aby równolegle dostarczać jedno zdarzenie do wielu niezależnych konsumentów Lambda.
Wzorzec fan-out z SNS to bezpłatna lekcja Serverless AWS Lambda Development na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Serverless AWS Lambda Development, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Serverless AWS Lambda Development zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
What is Fan-Out?
Fan-out means a single event is delivered to many subscribers at once, each processing it independently and in parallel.
Why Not Call Each Directly?
Calling each downstream function from your producer tightly couples them. Adding a consumer means changing the producer. Fan-out decouples this.
SNS as the Hub
Amazon SNS is a pub/sub topic. Publishers send a message once; SNS delivers a copy to every subscriber, including multiple Lambdas.
Publishing a Message
The producer publishes to the topic ARN. It does not know or care who is subscribed.
import boto3, json
sns = boto3.client('sns')
sns.publish(
TopicArn='arn:aws:sns:us-east-1:123:orders',
Message=json.dumps({'orderId': 42})
)The SNS Event Shape
Each subscribed Lambda receives the message wrapped in an SNS records envelope.
{
"Records": [{
"Sns": {
"Message": "{\"orderId\": 42}",
"TopicArn": "arn:aws:sns:us-east-1:123:orders"
}
}]
}A Consumer Handler
Each consumer parses the message from the record and does its own job: one emails a receipt, another updates inventory.
import json
def handler(event, context):
for record in event['Records']:
msg = json.loads(record['Sns']['Message'])
print('Processing order', msg['orderId'])Fan-Out plus SQS
For reliability, subscribe SQS queues to the topic and let Lambda poll the queues. This buffers spikes and gives each consumer its own retry and DLQ.
Message Filtering
SNS filter policies let a subscriber receive only messages matching attributes, so not every consumer processes every event.
{
"eventType": ["order.created"]
}SNS vs EventBridge
SNS is simple, high-throughput pub/sub. EventBridge adds richer routing, schemas, and many SaaS sources. Choose SNS for raw fan-out, EventBridge for complex routing.
Ordering Caveat
Standard SNS topics do not guarantee order or exactly-once delivery. Use SNS FIFO topics when ordering and deduplication matter.
Idempotent Consumers
Because a message may be delivered more than once, each consumer should be idempotent so duplicates do not cause double effects.
Quick Check
Test your fan-out knowledge.
Recap
You learned the fan-out pattern: publish once to SNS, deliver to many parallel consumers, add SQS for durability, filter messages, and keep consumers idempotent.
Często zadawane pytania
Czy lekcja „Wzorzec fan-out z SNS” jest bezpłatna?
Tak — pełny tekst „Wzorzec fan-out z SNS” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Serverless AWS Lambda Development, przejdź na CoddyKit PRO. Kurs Serverless AWS Lambda Development zawiera 4 lekcji w sumie.
Co nauczysz się w „Wzorzec fan-out z SNS”?
Dowiedz się, jak stosować wzorzec komunikacji fan-out z Amazon SNS, aby równolegle dostarczać jedno zdarzenie do wielu niezależnych konsumentów Lambda. Ćwiczysz Serverless AWS Lambda Development z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Serverless AWS Lambda Development?
Nie wymagamy żadnego doświadczenia. Serverless AWS Lambda Development w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Wzorzec fan-out z SNS”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Serverless AWS Lambda Development?
Tak. Każda lekcja Serverless AWS Lambda Development zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Asynchroniczne wywołania Lambda
- Kolejki Dead Letter (DLQ) dla błędów
- Orkiestracja za pomocą AWS Step Functions
- Wzorzec fan-out z SNS