November 6, 2016 · serverless DynamoDB Lambda SNS PushNotification

AWS'de PushNotification Serverless Nasıl Gerçekleştirilir ?

Normal'de mobil uygulamalara PushNotification gönderme işlemi iki kısımdan oluşur.

Bunu AWS Serverless ve Managed Servislerle yapmak istediğimizde biz bu işlem için Auth0, APIGateway, DynamoDB, Lambda, SNS servislerini kullanacağız.

Serverless Push Notification

Örneğin bir sosyal medya uygulması yaptınız ve sizin yaptığınız paylaşımı birisi Like ediyor ve bu bilginin size PushNotification ile ulaştırılması gerekiyor. Tabi burda amacımız sadece PushNotification Cyle anlatmak..

Adım 1: Öncelikle SNS altında Android ve iPhone için Application oluşturmamız gerekiyor. Aşağıdaki yazıda bu konuyu detaylıca anlatmıştım. Endpoint ve Topic Subscriptionlarını denemek için yapabilirsiniz.

SNS Register App

Adım 2: Auth0'dan tokenları oluşturmamız lazım Bu konuda yazdığım aşağıdaki makaleleri okuyabilirsiniz.

IAM'da SNS'e gerekli Policy oluşturup ilgili Role'lere atıyoruz. Bu sayede Auth0'ın SAML ile oluşturduğu tokenlar SNS CreatePlatformEndpoint oluşturmak için gerekli izinleri almış olacak..

IAM SNS Policy

Adım 3: Mobil Cihazlardan SNS'e Endpoint oluşturuyoruz bunun için Auth0'dan elde ettiğiniz token'lar ile aşağıdaki kodları çağırmanız yeterli.

SNS Mobile

Bu kodları çağırdığınızda SNS altıdaki Subscription altında device token'larınız için oluşturulan endpointleri görebilirsiniz.

Adım 4: Kullanıcıların Like işleminin APIGateway'den geçerek Lambda fonksiyonu ile DynamoDB'ye bir kayıt attığını varsayıyorum ve bu kayıttan sonra DynamoDB'deye bir kayıt eklenmesinin başka bir Lambda'yı tetiklemesi gerekiyor. Bu Lambda fonksiyonum gidecek DynamoDB'den ilgili kişinin kaydını bulacak ve SNS'den ilgili kişinin endpointini bularak bu kişiye Notification göndermesini sağlayacak..

Not: SNS Endpoint kaydı atarken CustemUserData olarak kullanıcının id'sini geçiyoruz ki bu id sayesinde daha sonra PushNotification göndereceğimiz kişiyi bulalım..

Eklenen Record sonrasında SNS'deki endpointlerden hangisi bizim kullanıcının Account ile aynı ise onun için PushNotifacation mesajı gönderilir. iOS ve Android iki defa ayrı ayrı listeyi dönmemiz gerekiyor çünku PlatformApplicationARN'leri farklı..

DynamoDB01

Sonrasıda da Notification gönderme işlemişini çağırıyoruz

DynamoDB02

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket
Comments powered by Disqus