AWS Lambda ile Python
Tags: aws, serverless, python, programming
Published: 2022-01-22 23:15:51

Herkese iyi hafta sonları. Bir süredir [heyboosterda](https://heybooster.ai)
[Django](https://www.djangoproject.com/) ile yazdığımız bazı endpointleri
[AWS Lambdaya](https://aws.amazon.com/tr/lambda/) taşıyoruz. Bu yazımda da
basit bir Lambda function nasıl oluşturulur, API Gateway ile nasıl bir endpoint oluştururuz
bu soruların cevabını vereceğim. Hazırsak kemerleri takalım &#x2708;&#xFE0F;

---

**Not:**

AWS'da açacağınız bir hesap ilk 1 yıl ücretsizdir.

---

### AWS Lambda Nedir?


> AWS Lambda, sunucu tedarik etmeden veya yönetmeden neredeyse her tür uygulama veya arka uç hizmeti için kod çalıştırmanıza olanak tanıyan, sunucusuz, olaya dayalı bir işlem hizmetidir. Lambda'yı 200'ün üzerinde AWS hizmeti ve hizmet olarak yazılım (SaaS) uygulamasından tetikleyebilir ve yalnızca kullandığınız kadar ödeyebilirsiniz.


Yani Lambda aslında kullandığın kadar öde mantığında çalışan ve serverless bir kod çalıştırma ortamı sunan AWS teknolojisidir. Ölçeklemek ve yönetmek oldukça kolaydır.

---

### API Gateway Nedir?


> Amazon API Gateway, geliştiriciler tarafından istenen ölçekte API'ler oluşturulup yayımlanmasını, bunların izlenmesini, bakımın yapılmasını ve güvenliğinin sağlanmasını mümkün kılan, tam olarak yönetilen bir hizmettir.

---

**Not:**

Aşağıdaki servisleri açmak için AWS'da arama ekranına servis ismini yazmanız yeterlidir.

---

### AWS Lambda Function Oluşturalım

Bu kısımda biraz ekran görüntüleri ile devam etmemiz gerekecek. Bunu ben de istemezdim ama durum
bunu gerektiriyor :(

İlk olarak Lambda servis ekranına giriyoruz ve Create function butouna basıyoruz.


![lambda1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lnevu2ddmx211hga5m5m.png)

Ardından Lambda functionımıza bir isim veriyoruz, bir dil seçimi yapıyoruz ve sistem mimarisini seçiyoruz. Sistem mimarisi olarak ben arm64 seçiyorum. Nedeni ise arm64 x86_64'e kıyasla daha az maliyetli. Benim yapılandırmam aşağıdaki gibi.


![lambda2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8coeb7oqjjsxbizey63j.png)

"Create function" butonuna tıkladıktan sonra artık bir Lambda functionımız oluşmuş oldu.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fvg8wkzna3ta9i5rb0iv.png)

Yukarıdaki gibi bir ekran bizi karşılıyor. Bu ekranda kodunuzu düzenleyebilirsiniz. Ben şimdilik bu şekilde bırakacağım. E peki biz nereye istek atacağız. Gelen cevabı nasıl görüntüleyeceğiz. Hemen aşağıdaki başlığa geçelim.

### API Gateway Oluşturalım

İstek almak ve bu istekleri karşılayabilmek için bir API Gateway oluşturmamız gerek. İlk olarak AWS API Gateway servisine giriyoruz.


![apigateway1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q4ywuk28j5mswc8ze8gf.png)

Yukarıdaki alanda HTTP API kısmındaki Build butonuna tıklıyoruz ve yapılandırma ekranı bizi karşılıyor. Bu ekranda ilk olarak integrations kısmından istediğimiz servisi seçeceğiz. Biz şu an Lambda ile uğraştığımız için "Lambda" yazan seçeneğe tıklıyoruz. Ardından bizim lambda functionımızı belirtmemiz gerekiyor. Onu da seçtikten sonra API ismi girip "Next" butonuna tıklayabiliriz. Benim yapılandırmam aşağıdaki gibi.


![apigateway2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xyykbbwhja3biy5ts9to.png)

Şimdi ise route ayarlarını yapmalıyız. Burda da HTTP methodu olarak GET seçiyorum ve diğer kısımları olduğu gibi bırakıyorum. "Resource path" alanını özelleştirebilirsiniz. Bir sonraki adımı da "Next" diyerek geçiyorum.


![apigateway3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bykkcoq9q4kypni4g723.png)


Bize yaptığımız ayarları gösteren son adımı da kontrol edip "Create" dedikten sonra artık hazırız &#x1F389;


![apigateway4](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l7qi4dr9msidgr6fcypb.png)

Bizi her şey bittikten sonra karşılayan ekranda bir Invoke URL var. O URLin sonuna ayarladığınız resouce pathi girerek oluşturduğunuz API'yi test edebilirsiniz. Eğer resource pathinizi hatırlamıyorsanız Routes menüsünden bakabilirsiniz.


![apigateway5](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mlsqlc3lz637h94vl9gy.png)

Artık AWS Lambda üzerinde çalışan bir API'niz oldu. Tebrik ederim &#128515;

---

Umarım yazı işinize yaramıştır. Anlamadığınız yerleri ya da isteklerinizi, önerilerinizi bana iletbilirsiniz. Keyifli haftalar dilerim :)

---

**Yararlandığım Kaynaklar**

* [https://aws.amazon.com/tr/lambda/](https://aws.amazon.com/tr/lambda/)
* [https://aws.amazon.com/tr/api-gateway/](https://aws.amazon.com/tr/api-gateway/)
* [https://ilteriskeskin.github.io/posts/aws-lambda-python/](https://ilteriskeskin.github.io/posts/aws-lambda-python/)