« Tüm yayınlar

SNS Mesajlarınız Neden Sessizce Kayboluyor?

SNS filtre politikaları abonelikte tanımlıdır, kodda değil. Bu yüzden publish başarılı görünse de mesaj hiç teslim edilmeyebilir. Nedenini ve çözümünü inceliyoruz.

AWS SNS'te bir mesaj yayınladığınızda MessageId dönmesi teslimatın garantisi değildir. Filtre politikaları abonelik seviyesinde tanımlanır ve publish çağrısı gerekli mesaj özniteliklerini (ör. eventType) içermiyorsa, SNS mesajı sessizce filtreler; hata fırlatmaz, DLQ'ya düşmez, sadece CloudWatch'taki NumberOfNotificationsFilteredOut metriği artar. Sonuç olarak kod incelemesi, mock'lanmış unit testler ve hatta AI kod asistanları bu sorunu tespit edemez, çünkü filtre politikası kod tabanında değil AWS hesabında yaşar.

Bu durum özellikle event-driven mimarilerde tehlikelidir: publish kodu doğru, abonelik yapılandırması da doğru görünür, ama ikisinin birbirine uymaması hiçbir yerde açıkça görünmez. AI asistanları da aynı tuzağa düşer; kaynak dosyalardaki mevcut publish çağrılarını örnek alıp aynı eksik öznitelikleri tekrarlayabilir, çünkü filtre politikasını göremezler.

Bu makalede önerilen çözüm, altyapı bilgisini (subscription'ların filtre politikalarını) MCP üzerinden AI asistanına canlı olarak sunmaktır. infrawise adlı araç, SNS konularını ve aboneliklerini salt-okunur şekilde tarayarak get_topic_details aracıyla hangi mesaj özniteliklerinin gerekli olduğunu ortaya çıkarır. Böylece asistan, publish kodu yazmadan önce hedef konunun filtre gereksinimlerini sorgulayıp doğru MessageAttributes bloğunu ilk denemede üretebilir.

Mühendisler için çıkarım net: SNS filtre uyumsuzlukları prod ortamında müşteri şikayetiyle keşfedilen sessiz hatalardır. FilterPolicyScope'un MessageAttributes mi yoksa MessageBody mi olduğunu bilmek ve bu bilgiyi geliştirme anında görünür kılmak, olay anında değil kodlama anında sorunu yakalamanın tek yolu.