AWS Lambda - Python'da İşlev
Bu bölümde, Python'da basit bir AWS Lambda işlevi oluşturacağız ve ayrıntılarını takip ederek çalışma konseptlerini anlayacağız.
AWS'de Lambda işlevi oluşturmaya başlamadan önce Python için AWS araç seti desteğine ihtiyacımız var. Bu amaçla, aşağıda verilen adımları izleyin ve ekteki ilgili ekran görüntülerini izleyin -
Aşama 1
AWS konsolunda oturum açın ve Lambda işlevi oluşturun ve dili Python olarak seçin.
Adım 2
Şimdi tıklayın Create functiondüğmesini tıklayın ve Python'da basit bir AWS Lambda oluşturmanın ayrıntılarını girin. Bu kod mesajı döndürürHello from Lambda using Python ve burada gösterildiği gibi görünüyor -
Aşama 3
Şimdi değişiklikleri kaydedin ve çıktıyı görmek için kodu test edin. UI'daki test düğmesini kullanarak AWS konsolunda test ettiğinizde aşağıdaki çıktıyı ve günlükleri görmelisiniz.
4. adım
Artık herhangi bir düzenleyicinin veya Python için bir IDE'nin içine kod yazabilirsiniz. Burada kodu yazmak için görsel stüdyo kodunu kullanıyoruz. Daha sonra dosyayı sıkıştırmalı ve AWS konsoluna yüklemelisiniz.
Burada kodu sıkıştırdık ve AWS konsolunu kullandık.
Adım 5
Şimdi seçin Upload a .ZIP file aşağıda gösterildiği gibi seçenek -
Python için İşleyici Ayrıntıları
İşleyicinin dosyanın adı ve ardından işlevin adı olması gerektiğini unutmayın. Yukarıdaki durumda, dosya adımızhellopython.py ve işlevin adı my_handler; böylece işleyici olacak hellopython.my_handler.
Yükleme tamamlandıktan ve değişiklikler kaydedildikten sonra, aslında zip dosyasının ayrıntılarını AWS Lambda konsolundaki çevrimiçi düzenleyicide gösterir. Şimdi, çıktıyı ve günlükleri görmek için kodu test edelim.
Şimdi, aşağıdaki örnek kodu kullanarak Lambda işlevinin ayrıntılarını anlayalım -
def my_handler(event, context):
return "aws lambda in python using zip file"
Yukarıdaki kodda, my_handler işlev adı 2 parametreye sahiptir, olay ve bağlam.
Python'da Bağlam Nesnesi
Bağlam nesnesi, Lambda işlevinin adı, milisaniye cinsinden kalan süre, istek kimliği, bulut izleme grubu adı, zaman aşımı ayrıntıları gibi ayrıntıları verir.
Bağlam nesnesinde bulunan yöntemler ve nitelikler aşağıda verilen tablolarda gösterilmektedir -
Sr.No | Yöntem Adı ve Açıklaması |
---|---|
1 | get_remaining_time_in_millis() Bu yöntem, lambda işlevi işlevi sonlandırana kadar kalan süreyi milisaniye cinsinden verir. |
Sr.No | Öznitelik ve Açıklama |
---|---|
1 | function_name Bu, aws lambda işlev adını verir |
2 | function_version Bu, aws lambda işlevinin çalıştırılma sürümünü verir |
3 | invoked_function_arn Bu ARN ayrıntılarını verecektir. |
4 | memory_limit_in_mb Bu, lambda işlevi oluşturulurken eklenen bellek sınırını gösterir |
5 | aws_request_id Bu, aws istek kimliğini verir. |
6 | og_group_name Bu, cloudwatch grup adını verecektir |
7 | log_stream_name Bu, günlüklerin yazıldığı bulut izleme günlük akışı adını verecektir. |
8 | identity Bu, aws mobile sdk ile birlikte kullanıldığında amazon cognito kimlik sağlayıcısı hakkında ayrıntılı bilgi verecektir. Verilen detaylar aşağıdaki gibidir -
|
9 | client_context Bu, aws mobile sdk ile kullanıldığında istemci uygulamasının ayrıntılarını verecektir. Verilen detaylar aşağıdaki gibidir -
|
Python'da bağlam ayrıntılarını veren çalışan bir örnek görelim. Aşağıda verilen koda uyun -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
Yukarıda gösterilen kodun ilgili çıktısı aşağıda verilmiştir -
Python kullanarak günlük kaydı
Python kullanarak bilgileri günlüğe kaydetmek için, mevcut yazdırma veya günlükleyici işlevini kullanabiliriz. Yukarıdaki bağlam örneğini kullanalım ve günlüklerin yazdırılıp yazdırılmadığını görmek için inCloudWatch'ı kontrol edelim. Aşağıdaki kodu inceleyin -
def my_handler(event, context):
print("Log stream name:", context.log_stream_name)
print("Log group name:", context.log_group_name)
print("Request ID:",context.aws_request_id)
print("Mem. limits(MB):", context.memory_limit_in_mb)
print("Time remaining (MS):", context.get_remaining_time_in_millis())
return "aws lambda in python using zip file"
Bu kodun CloudWatch'taki çıktısı aşağıda gösterildiği gibidir -
Günlükleri CloudWatch'a yazdırmak için günlükçüyü kullanmayı anlamak için aşağıdaki örneği inceleyin -
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
logger.info('Using logger to print messages to cloudwatch logs')
return "aws lambda in python using zip file"
Bunun çıktısı aşağıda verilen ekran görüntüsünde gösterildiği gibi olacaktır -
Lambda işlevi için Python'da Hata İşleme
Bu bölümde, Python'da hataların nasıl işleneceğini gösteren çalışan bir örnek görelim. Burada verilen kod parçasına bakın -
def error_handler(event, context):
raise Exception('Error Occured!')
Günlük görüntüsü, buradaki resimde gösterildiği gibidir -