Serverless AWS Lambda Development · Урок

Шаблон широковещательной рассылки с SNS

Освойте шаблон широковещательной рассылки сообщений с помощью Amazon SNS, чтобы параллельно доставлять одно событие множеству независимых потребителей Lambda.

Урок 4 из 413 шагов

«Шаблон широковещательной рассылки с SNS» — бесплатный урок Serverless AWS Lambda Development на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Serverless AWS Lambda Development, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Serverless AWS Lambda Development содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

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.

Можно начать бесплатно

Изучай Serverless AWS Lambda Development с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «Шаблон широковещательной рассылки с SNS» бесплатный?

Да — полный текст урока «Шаблон широковещательной рассылки с SNS» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Serverless AWS Lambda Development, подпишись на CoddyKit PRO. Курс Serverless AWS Lambda Development содержит 4 уроков всего.

Чему я научусь в уроке «Шаблон широковещательной рассылки с SNS»?

Освойте шаблон широковещательной рассылки сообщений с помощью Amazon SNS, чтобы параллельно доставлять одно событие множеству независимых потребителей Lambda. Ты практикуешь Serverless AWS Lambda Development с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Serverless AWS Lambda Development?

Предыдущий опыт не требуется. Serverless AWS Lambda Development на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Шаблон широковещательной рассылки с SNS»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Serverless AWS Lambda Development?

Да. Каждый урок Serverless AWS Lambda Development включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Асинхронные вызовы Lambda
  2. Очереди недоставленных сообщений (DLQ) при сбоях
  3. Оркестрация с помощью AWS Step Functions
  4. Шаблон широковещательной рассылки с SNS
← Назад к Serverless AWS Lambda Development