0Pricing
Cloud & IT Cert Prep · Ders

SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu

Her SQS tüketicisinin yalnızca ilgilendiği mesajları alması için SNS abonelik filtre ilkelerini uygulayarak gereksiz işlemeyi azaltacaksınız.

SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Filtreleme Olmadığında Ortaya Çıkan Sorun

Filtreleme olmayan bir fan-out mimarisinde her SQS abonesi her SNS mesajını alır. Konunuz 10 farklı ürün kategorisi için sipariş olayları yayımlıyor ancak bir abone yalnızca elektronik siparişlerini işliyorsa, yine de gıda ve giyim mesajlarını alır ve bunları atmak zorunda kalır. Bu durum işlem gücünü boşa harcar, maliyetleri artırır ve tüketicilere gereksiz yük bindirir. SNS abonelik filtre ilkeleri, mesajları yalnızca uygun abonelere SNS'nin kendisinin yönlendirmesini sağlayarak bu sorunu çözer.

SNS Filtre İlkeleri Nasıl Çalışır

Filtre ilkesi, bir SQS veya Lambda aboneliğine uygulanan JSON nesnesidir. SNS, teslim etmeden önce ilkeyi her mesajın mesaj özniteliklerine göre değerlendirir. Mesaj öznitelikleri filtre ilkesiyle eşleşirse mesaj teslim edilir; eşleşmezse SNS bu aboneyi sessizce atlar. Filtre ilkeleri dize eşleştirmeyi, sayısal aralıkları, ön ek eşleştirmeyi ve bir özniteliğin varlığını veya yokluğunu denetlemek için exists işleci destekler.

# Filter policy: only deliver ELECTRONICS orders from US or EU
{
  'category': ['ELECTRONICS'],
  'region': ['US', 'EU'],
  'amount': [{'numeric': ['>=', 100]}]
}

Filtre İlkesi Kapsamı: Mesaj Öznitelikleri ve Gövde

Varsayılan olarak filtre ilkeleri mesaj öznitelikleriyle (üst verilerle) eşleşir. SNS, 2023 itibarıyla filtre ilkesi kapsamını MessageBody olarak ayarlayarak yük tabanlı (gövde) filtrelemeyi de destekler. Bu özellik, yayıncıların öznitelik eklemesini gerektirmeden doğrudan mesaj gövdesinde JSON yolu tabanlı filtreleme yapmanızı sağlar. Gövde filtreleme daha esnektir ancak mesaj gövdesinin geçerli JSON olmasını gerektirir. Her zaman yayıncınızın çıktı biçimiyle hangi kapsamın eşleştiğini doğrulayın.

# Set filter scope to MessageBody
aws sns set-subscription-attributes \
  --subscription-arn 'arn:aws:sns:...' \
  --attribute-name FilterPolicyScope \
  --attribute-value MessageBody

aws sns set-subscription-attributes \
  --subscription-arn 'arn:aws:sns:...' \
  --attribute-name FilterPolicy \
  --attribute-value '{"category": ["ELECTRONICS"]}'

Sayısal ve Ön Ek Filtre Koşulları

Filtre ilkeleri, basit dize eşitliğinin ötesinde birden fazla eşleştirme işleci destekler:

  • Sayısal: {"numeric": ["=", 100]}, {"numeric": [">", 50, "<=", 200]}
  • Ön ek: {"prefix": "order-"}, bu ön ekle başlayan tüm dizelerle eşleşir
  • Hariç tutulanlar: {"anything-but": ["CANCELLED"]}, listelenenler dışındaki tüm değerlerle eşleşir
  • Var olma: {"exists": true}, öznitelik mevcutsa eşleşir; yoksa false olur

Filtreleme için Özniteliklerle Mesaj Yayımlama

Filtrelemenin çalışması için yayıncının SNS'ye yayımlarken mesaj özniteliklerini içermesi gerekir. Öznitelikler, bir veri türüne (String, Number, Binary) sahip anahtar-değer çiftleridir. Yayıncının hangi abonelerin hangi filtre ilkelerine sahip olduğunu bilmesi gerekmez; yalnızca olayı açıklayan özniteliklerle mesajı zenginleştirir. SNS yönlendirmeyi otomatik olarak gerçekleştirir. Böylece yayıncılar aboneye özgü mantıktan tamamen bağımsız kalır.

aws sns publish \
  --topic-arn 'arn:aws:sns:us-east-1:123456789012:OrderTopic' \
  --message '{"orderId": "789", "total": 250.00}' \
  --message-attributes '{
    "category": {"DataType": "String", "StringValue": "ELECTRONICS"},
    "region": {"DataType": "String", "StringValue": "US"},
    "amount": {"DataType": "Number", "StringValue": "250"}
  }'

Çok Katmanlı Fan-Out: SNS + Birden Fazla SQS

Gelişmiş bir fan-out topolojisinde SNS, farklı özgüllük düzeylerinde SQS kuyruklarına yönlendirme yapabilir: bir kuyruk denetim amacıyla tüm siparişleri alır (filtre yoktur), başka bir kuyruk dolandırıcılık incelemesi için yalnızca HIGH_VALUE siparişlerini (amount >= 1000) alır ve üçüncü bir kuyruk elektronik deposu için yalnızca ELECTRONICS siparişlerini alır. Her SQS kuyruğunun kendi Lambda tüketicisi vardır. Bu desen her işleme katmanını bağımsız olarak ölçeklendirir ve mevcut katmanlara veya yayıncıya dokunmadan yeni tüketiciler eklemenizi sağlar.

Hesaplar Arasında SNS'den SQS'ye Teslimat

SNS, farklı bir AWS hesabındaki SQS kuyruklarına teslimat yapabilir. SQS kuyruğunun kaynak tabanlı ilkesi, SNS hizmet sorumlusunun yayımlayan hesabın SNS konusu ARN'sinden sqs:SendMessage çağrısı yapmasına izin vermelidir. Bu, kimlik bilgilerini paylaşmadan merkezi olay yayımlamayı (bir hesap yayımlar, birden fazla hesap ekibi abone olur) mümkün kılar. Hesaplar arası fan-out, birden fazla hesap içeren AWS Organizations kurulumlarında yaygın bir desendir.

# SQS queue policy to allow cross-account SNS delivery
{
  'Version': '2012-10-17',
  'Statement': [{
    'Effect': 'Allow',
    'Principal': {'Service': 'sns.amazonaws.com'},
    'Action': 'sqs:SendMessage',
    'Resource': 'arn:aws:sqs:us-east-1:CONSUMER_ACCOUNT:MyQueue',
    'Condition': {
      'ArnEquals': {'aws:SourceArn': 'arn:aws:sns:us-east-1:PUBLISHER_ACCOUNT:MyTopic'}
    }
  }]
}

Lambda'dan Önce Arabellek Olarak SQS

Olay hacmi aniden yükseldiğinde, doğrudan SNS'den Lambda'ya yapılan çağrılar Lambda'yı hemen ölçeklendirerek alt sistemlerdeki veritabanlarını veya API'leri aşırı yükleyebilir. SNS ile Lambda arasına SQS eklemek bir arabellek oluşturur: SNS SQS'ye teslimat yapar, Lambda da SQS'yi denetimli bir toplu işlem boyutuyla yoklar. Böylece Lambda sürdürülebilir bir hızda işlem yaparken SQS trafik artışlarını absorbe eder. Kuyruğun derinliği bir geri basınç mekanizması görevi görür; bunu izleyebilir ve tüketici gecikmesine işaret eden bir eşik değerin üzerine çıktığında uyarı oluşturabilirsiniz.

Doğrudan Lambda ile SQS Arabellekli Fan-Out Karşılaştırması

SNS → Lambda (doğrudan): en düşük gecikme, arabelleğe alma yoktur, Lambda hemen ölçeklenir. Saniyenin altındaki gecikmenin önemli olduğu gerçek zamanlı uyarılar veya acil bildirimler için en uygundur. SNS → SQS → Lambda: DLQ desteği, denetimli aktarım hızı, görünürlük zaman aşımıyla yeniden deneme ve kuyruk derinliği izleme ekler. İşlem işleme, envanter güncellemeleri ve alt sistem sınırlarına uyulması gereken her senaryo için en uygundur. Sınav sorularında kalıcılık ve hız denetiminden söz edildiğinde SQS arabelleğini seçin.

Filtre Politikalarını Test Etme

Dağıtıma almadan önce örnek bir mesajın filtre politikanızla eşleşip eşleşmeyeceğini test etmek için SNS konsolundaki filtre politikası düzenleyicisini kullanın. Mesaj teslimini benzetmek ve yönlendirmeyi doğrulamak için SNS Sandbox'u da kullanabilirsiniz. Kod içinde, bilinen özniteliklere sahip test mesajları yayımlayarak ve her abonelik için CloudWatch ölçümlerini kontrol ederek filtre politikalarını doğrulayın: NumberOfMessagesFiltered ölçümü, filtre tarafından kaç mesajın engellendiğini gösterir. Böylece üretim olaylarını beklemeden politikalarınızı ayarlayabilirsiniz.

Uçtan Uca Entegrasyon Özeti

Tam bir SNS + SQS entegrasyonu şu şekilde görünür: (1) Uygulama, mesaj öznitelikleriyle birlikte bir SNS Standard konusuna olay yayımlar; (2) SNS, her aboneliğin filtre politikasını değerlendirir ve yalnızca eşleşen mesajları ilgili SQS kuyruğuna teslim eder; (3) Lambda, yapılandırılmış bir toplu işlem boyutuyla her SQS kuyruğunu yoklar ve mesajları işler; (4) Başarısız mesajlar maxReceiveCount sonrasında kuyruğun DLQ'suna ulaşır; (5) DLQ derinliğini izleyen bir CloudWatch alarmı ekibi uyarır. Tamamen ayrıştırılmış ve dayanıklı bu model, örnek bir SAA-C03 mimarisidir.

Kısa Kontrol

Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: SNS filtre politikaları, SNS düzeyinde mesaj özniteliklerine veya gövde içeriğine göre mesajları yönlendirerek aşağı akıştaki tüketicilerin gereksiz işlemler yapmasını önler; SNS→SQS→Lambda modeli, fan-out yayını ile işleme arasında kalıcı arabellekleme ve hız denetimi sağlar; hesaplar arası SQS teslimi ise kuyruk kaynak politikalarını kullanarak birden çok hesap içeren ortamlarda merkezi yayım/abonelik olanağı sunar. Sırada Amazon API Gateway'in REST, HTTP ve WebSocket API'lerini inceliyoruz.

Sıkça Sorulan Sorular

“SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu” dersi ücretsiz mi?

Evet — “SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu” dersinde ne öğreneceğim?

Her SQS tüketicisinin yalnızca ilgilendiği mesajları alması için SNS abonelik filtre ilkelerini uygulayarak gereksiz işlemeyi azaltacaksınız. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. SQS Standard ve FIFO Kuyrukları
  2. Görünürlük Zaman Aşımı, DLQ ve Uzun Yoklama
  3. SNS Konuları ve Fan-Out Mimarisi
  4. SQS Mesaj Filtreleme ve SNS + SQS Entegrasyonu
← Cloud & IT Cert Prep Sayfasına Dön