AWS Chalice — Acısız Serverless Serüveni (2)

Kemalcan Bora
2 min readJul 10, 2022

Geçtiğimiz yazıda Chalice üzerine giriş yapmıştık bu yazıda ise pure lambda, schedule cron gibi nimetlerden faydalanacağız. Acısız Serverless Serüveni (1)

Nedir bu Pure lambda?[1]

Eğer Chalice tarafından desteklenmeyen bir fonksiyon oluşturmak istiyorsanız veya sadece Lambda işlevleri oluşturmak istiyorsanız, ancak işleme bağımlılıklarını ve dağıtımlarını kendiniz yönetmek istemiyorsanız kullanabilirsiniz. Örneğin Python üzerinde bir search algoritması yazdınız ve bunun endpoint olmasını istemiyorsunuz ve başka bir NodeJS lambdasının bunu çalıştırmasını istiyorsunuz burada pure lambda olarak yazıp nodejs üzerinden tetikleyebilirsiniz.

@app.lambda_function(name="SearchMe")
def search(event, context):
return {'hello': 'world'}

Burada name vermenize gerek yok fakat event, context eklemekte fayda var.

Burada context neler içeriyor? [2]

  • function_name – Lambda fonksiyonunun adı.
  • function_version – Fonksiyonun versiyonu
  • invoked_function_arn – İşlevi çağırmak için kullanılan Amazon Kaynak Adı (ARN). Çağırıcının bir sürüm numarası mı yoksa takma ad mı belirttiğini belirtir.
  • memory_limit_in_mb – İşlev için ayrılan bellek miktarı.
  • aws_request_id – Çağırma isteğinin tanımlayıcısı.
  • log_group_name – İşlevin günlük grubu.(Log grupları)
  • log_stream_name – İşlev örneği için günlük akışı.
  • identity – (mobil uygulamalar) İsteğe yetki veren Amazon Cognito kimliğiyle ilgili bilgiler.
  • cognito_identity_id – Kimliği doğrulanmış Amazon Cognito kimliği.
  • cognito_identity_pool_id – Amazon Cognito kimlik havuzu.
  • client_context – (mobil uygulamalar) İstemci uygulaması tarafından Lambda’ya sağlanan istemci bağlamı.
  • client.installation_id
  • client.app_title
  • client.app_version_name
  • client.app_version_code
  • client.app_package_name

Artık projeye başlayalım

Proje aslında oldukça basit olacak bir endpoint olacak buraya youtube linkini verdiğimiz anda onu MP3 e çevirecek ve bunu S3 e atacak belki ileride kendimize e-posta falan da göndertebiliriz. Kodumuzu yazacağız ama nereye?

Amazon bunun için şunu diyor “ Uygulamanız büyüdükçe, uygulamanızı birden çok dosyada yapılandırmayı tercih ettiğiniz bir noktaya ulaşabilirsiniz. Bir chalicelib/ dizini oluşturabilirsiniz ve bu dizindeki herhangi bir şey yinelemeli olarak dağıtım paketine dahil edilir.” [3] Devam ediyoruz öncelikle youtube videolarına odaklanalım daha sonra başka platformlardaki videoları da indirmek için başka kütüphaneler odaklanacağız burada en güzel kütüphane sanırım youtube için pytube.

pip install pytube

Yükledikten sonra yapmamız gereken şey requirements.txt dosyasında bunu eklemek.

pytube==12.1.0

downloader isimli bir python dosyası oluşturup youtube ve daha sonra belki kullanacağımız başka platformlar için ufak bir kod yazdım ve bunu chalice lib içerisine ekledim.

bir sonraki aşamada S3 e yükleyeceğiz ve daha sonra schedule cron lambda ile yüklediklerimizi haftada bir sileceğiz. Diğer yazıda görüşmek üzere..

Acısız Serverless Serüveni (3)

Referanslar

--

--