Lambda Invoke Kullanımı

Halil Tuğcan Özaktaş
MagicLab
Published in
2 min readMar 2, 2022

Bir birlerine ihtiyac duyan AWS Lambda functionlarını en performanslı nasıl kullanabiliriz.

Aws Lambda

Serverless kavramı ile sektörde en çok konuşulan ürünlerden biride AWS Lambda. Lambda ile yönetim ihtiyacı duymadığınız servisleri yazabilir çalıştırabilir, arka planda scale olması vs. gibi durumlarda başınız ağrımadan keyfini sürebilirsiniz.

Ama mimariniz büyüdükce ve function sayılarınız arttıkça functionlarınız bir birine ihtiyac duyabilir, tek başına görevlerini yaparlarken haberleşmeleri gerekiyor olabilir.

Örnekle ilerlersek; diyelim bir SignUp lambdanız var, görevi hızlıca kullanıcıyı sisteme register etmek ve en basitinden register olan ID bilgisini dönmek. Ama başka ihtiyaclarımız çıktı ve bu function içinde yapmadığımız bir şeyi tetiklemek istiyoruz. Nasıl yapabiliriz ?

Öncelikle başka bir lambdayı çalıştıracak olan function’umuza role tanımlarını vermemiz ve yetkilerini belirlememiz gerekiyor.

Lambda IAM Role’s

Yukarıda yazan 2 role’u lambdamıza vermemiz yeterli. Daha sonrasında function içinden direkt kod ile erişimimiz olacaktır.

Örnek SignUp Function

var AWS = require('aws-sdk');
var lambda = new AWS.Lambda();

exports.handler = function(event, context) {
/// ....
/// ....
var params = {
FunctionName: 'AfterSignUp',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: '{ "username" : "hto" }'
};
lambda.invoke(params, function(err, data) {
/// ....
})
};

Bu kod blok’u AWS.Lambda(); ile gelen invoke methodunu çalıştırır, params içinde yer alan FunctionName keyi ile tanımlanan AfterSignUp lambdasına Payload içinde yer alan verileri gönderir. Gönderilen data bağımsız olarak kullanılabilir.

Invoke ile neleri kolaylaştırabilir daha iyi yapabiliriz ?

  1. Custom loglama ve verileri bir yerden işlemek için, işlemlerini tetiklemede kullanılabilir.
  2. Async invoke yaparak analiz, analitik gibi işlemlerde görevi ikinci bir yere yıkıp kaçabilirsiniz.
  3. Bütün işlemlerimiz tek bir database ile işlenip saklanıyorsa, invoke edilen function da ikinci bir database connection açmaz işini yapıp sonucu döner. Invoke ettiren functionda ki connection kullanılarak veriyi database alanına işler.
  4. Üçüncü parti bir servise async veri aktarımı sağlanabilir.
  5. Cold start süresi konusunda size kolaylık sağlar. (Boştaki uykuya yatmış bir lambdanın tekrar ayağa kalkma süresi denilebilir.)
  6. Çalışma süresi kısalacağından server maliyeti daha az olacaktır.
  7. Bir lambda execute işlemi ile birden fazla lambda çalıştırıp yönetmenize imkan sağlar.

--

--