June 13, 2016 · serverless Auth0 Lambda DynamoDB

Serverless Webapp with Auth0, ApiGateway, Lambda, DynamoDB

Serverless Webapp with Auth0, ApiGateway, Lambda, DynamoDB

Auth0Serverless

Benim gibi Java'da bir WebApp geliştiriyorsanız. Defacto olan Spring MVC, Spring Security, Hibernate vb Spring projeleri ile uygulamanızı geliştirerek bir WebApp paketi yani war oluşturur ve bu paketi Jetty, Tomcat, JBoss, Glassfish, Weblogic vb.. Web Sunucusuna deploy ederek uygulamanızı kullanıma açarsınız.

Biraz daha yenisi SpringBoot ile web uygulamanızı microservis haline getirip run edince direk Web Sunucusu ile birlikte ayaklanmasını sağlayabilirsiniz.

Bugün ise buna farklı bir açıdan yaklaşan AWS mimarisindeki Servisler ile Sunucu kullanmadan bu tip bir web uygulaması nasıl geliştirilir onu anlamaya çalışacağız. Bunun için buldugum örnek ise Auth0 APIGateway Tutorial. Gerçekleştirmesi çokca zaman alıyor. Burada tutorial baştan anlatmak yerine resimlerle hangi adımları gerçekleştirmek gerektiğinden bahsedeceğim. Tutorial'da bahsedilmeyen bir kaç eksiklik var. Bunlardan bahsederek genel Tutorial kapsamını anlatmaya çalışacağım.

Özet

Kullandığımız Teknolojiler

S3: Web Client Uygulamanızın HTML, CSS, JS vb.. web dosyalarının tutulması ve https olarak sunulması sağlanır.

ApiGateway: Uygulamanıza ait RESTful API oluşturmanızı sağlar.

Lambda: RESTful'dan gelen istekleri karşılayarak iş mantıklarını gerçekleştirir.

DynamoDB: NoSQL veritabanınıdır. İstemciden gelen bilgiler veritabanında saklanır veya istendiğinde tekrar istemciye döndürülür.

IAM: AWS Identity And Access Management üzerinden Authorization(Yetkilendirme) yani APiGateway API Endpointlerine yetki rolleri tanımlama gerçekleştiriliyor.

Auth0: AWS IAM'de IdentityProvider ile Authentication(Kimlik Doğrulama) işlevini Auth0'a verir. Bu sayede login,signup,resetpass, vb.. işlemler Auth0 üzerinden gerçekleştirilebildiği gibi OAuth standardı sayesinde sosyal medya üzerindende (Twitter, Facebook, LinkedIn) üyelik işlemini gerçekleştirilebilirsiniz. vb..

DynamoDB Tablo Tanımlama

DynamoDB üzerinde Pets ismi ile bir tablo oluşturuyoruz. Aynı anda 3 read/write kapasiteli bir tablo bu. Oluşan tablo arn ismini bir yerlere not ediyoruzki ileride bu arn'i yetkilendirmede kullanacağız.

Step01 Step02

IAM'de Lambda için DynamoDB Erişim Rolü Tanımlama

Geliştireceğimiz Lambda fonksiyonlarının DynamoDB ve Log erişim gerçekleştirebilmesi için IAM içerisinde ilgili tablo için ApiGatewayLambdaExecRole isminde bir role tanımlıyoruz. Burda bir önceki adımda not ettiğimiz tablonun ARN'sini Policy tanımlamada kullanıyoruz.

Step03 Step04 Step05

DynamoDB ile etkileşime geçecek Lambda Fonksiyonları

Pet/Evcil Hayvan bilgilerini DynamoDB'ye yazacak ve okuyacak Lambda fonskiyonlarını yazıyoruz.

İlk önce GetPetInfo (Okuma) Lambdasını oluşturuyoruz. Lambda'ya rol olarak bir önceki adımda oluşturduğumuz ApiGatewayLambdaExecRole rolünü atıyoruz.

Step06

GetPetInfo için test düğmesine bastığımızda boş bir Array'in dönüş yaptığını görebilirsiniz. Veritanında kayıtlı bir evcil hayvan yok.

Step07

UpdatePetInfo kısmında Evcil hayvan bilgilerini DynamoDB'ye yazan Node.js fonksiyonunu yazıyoruz. ApiGatewayLambdaExecRole bu fonksiyonada rol olarak atıyoruz.

Step08

UpdatePetInfo test etmek için dog bilgilerini sisteme girip test düğmesine basıyoruz. Evcil köpek bilgilerimiz veritabanımız kayıt oluyor. GetPetInfo için tekrar test düğmesine bastığımızda veritabanına kaydettiğimiz köpek bilgisi geriye dönecektir.

Step09 Step10

NoOps isminde hiç bir işlem gerektirmeyen Node.js fonksiyonunu yazıyoruz.

Step11

APIGateway SecurePets API'si tanımlama

Step12 Step13

Get Metodunu tanımlıyoruz ve Test'lerini gerçekleştiyoruz.

Step14 Step15 Step16 Step17

POST Metodunu tanımlıyoruz ve Test'lerini gerçekleştiyoruz.

Step18 Step19 Step20 Step21

Auth0 Application Tanımlama

Step22 Step23 Step24

AWS IAM IdentityProvider Tanımlama

Step25 Step26 Step27 Step28 Step29 Step30 Step31 Step32 Step33 Step34 Step35 Step36 Step37 Step38 Step39 Step40 Step41 Step42

APIGateway IAM Role Tanımlama

Step43 Step44

APIGateway OPTIONS ve CORS Tanımlama

Step45 Step46 Step47 Step48 Step49 Step50 Step51 Step52

APIGateway DEPLOY AND GENERATE SDK

Step53 Step54 Step55 Step56

UPLOAD WEBAPP TO S3 AND CONFIGURE

Step57 Step58 Step59 Step60 Step61 Step62 Step63 Step64 Step65 Step66 Step67 Step68 Step69 Step70 Step71 Step72 Step73 Step74 Step75 Step76 Step77 Step78 Step79 Step80

NEW API PURCHASE FOR SOCIAL USER

Step81 Step82 Step83 Step84 Step85 Step86 Step87 Step88 Step89 Step90 Step91 Step92 Step93 Step94 Step95 Step96 Step97 Step98

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