Azure Functions sadece tetiklendiği zaman çalışan, sunucu altyapısından bağımsız fonksiyonlar oluşturabildiğiniz bir sunucusuz yazılım servisidir. Burada “sunucusuz” ibaresi ile anlatılmak istenen aslında sizin sadece yazdığınız kod ve gereksinimleri ile ilgilenmenizin yeterli olmasıdır. Sizin kodunuzun düzgün çalışabilmesi için gerekli tüm altyapı Azure tarafından yönetilmektedir.
Azure Functions her ne kadar “stateless” fonksiyonlar için için tasarlanmış olsa da, farklı veri kaynaklarına bağlanarak hızlı API geliştirme işlemleri için de kullanılabilen bir sistemdir.
Bu yazımda sizlere Azure Functions üzerinde bir python kodunu nasıl çalıştıracağımızı göstereceğim.
Ön Gereksinimler
Azure Functions üzerine python projenizi oluşturabilmek için öncelikle bazı gereksinimleri yüklemeniz gerekli. Azure Functions şu anda Python 3.6 versiyonunu destekliyor. O yüzden ilk olarak bilgisayarımıza Python 3.6 kuruyoruz. Python 3.6.8 versiyonunu buradan indirip bilgisayarınıza yükleyebilirsiniz.

Resim – 1
VS Code için Azure Functions eklentisi
Projemizi oluşturma ve Azure functions üzerine yükleme işlemleri için ise; VS Code ve Azure Functions Eklensini yüklemeniz gerekiyor. Python üzerinde geliştirme yapacağımız için Python eklentisini de yüklemenizi öneririm.
Tabi bir de geçerli bir Azure Aboneliğiniz olması gerekli. Eğer daha önce abonelik oluşturmadıysanız Azure size 1 aylık bedava deneme imkanı sunacaktır. Benim gibi deneme süresini erken başlatıp boşa harcadıysanız da üzülmeyin. Abonelikler altından “Pay-As-You-Go” üyeliği ile sadece kullandığınız kadar ödeme yapma seçeneğiniz var.
Azure Functions Üzerinde Python Projesi Oluşturma
Tüm gereksinimleri tamamladıysanız python fonksiyonumuzu çok hızlı bir şekilde oluşturabiliriz. Bunun için öncelikle VS Code çalıştırıyoruz ve sol taraftaki toolbar üzerinde Azure tuşuna tıklıyoruz. Functions kısmının aktif hale gelmesi için öncelikle aktif üyeliğinizin bulunduğu hesabınızla giriş yapmalısınız. Bunun için en üst kutucukta bulunan bağlantıyı kullanabilirsiniz. Giriş yaptıktan sonra Functions kutusu üzerinde bulunan toolbar’daki ilk tuşa tıklayarak projemizi oluşturmaya başlıyoruz.

Resim -2
Azure Functions projesi oluşturma
Proje oluşturma işlemi 5 sorudan oluşuyor. Bu sorular sırasıyla;
- Proje klasörünü seçin –
ms-az-func-python-tutorial
- Kullanacağınız yazılım dilini seçin –
Python
- Fonksiyonun tetikleme türünü seçin –
HttpTrigger
- Fonksiyonunuza bir isim verin –
HttpTrigger
- Erişim yetkilendirmesini seçin –
Anonymous

Resim – 3
Oluşturulan Azure Functions python projesi
Proje oluşturma işlemi tamamlandığında karşımıza örnek bir kod çıkıyor. Bu kod sayfası tüm kodunuzu oluşturacağınız ve Azure Functions üzerinde çalışacak python scriptini içeriyor. Çok detaya girmeden hızlıca kodu açıklamak gerekirse, Azure Functions projesi varsayılan ayarlarıyla kullanıldığında tetiklenme durumunda main
fonksiyonunu çağırıyor ve bir req
değişkeniyle birlikte bir request nesnesi gönderiyor. Kodun kalan kısmında ise GET
veya POST
ile gelen parametrelerin nasıl okunacağı ile ilgili bir örnek gösterilmiş. Fonksiyon sonucunda func.HttpResponse fonksiyonu yardımıyla content
(string) ve beraberinde status_code
dönüşü yapabiliyorsunuz.
Bu yazımda size göstereceğim örnek kod çok basit bir feed parsing işlemi olacak. Bunun için buzzfeed üzerinden bir rss feed okuyup, yalnızca istediğim özellikleri filtreleyerek json olarak geri döndüreceğim. Bunun için feedparser python modülüne ihtiyacım var. Bu modülü kurmak için VS Code terminal penceresinde `pip install feedparser` komutunu çalıştırıyoruz.
Resim – 4
Proje için gerekli modüllerin kurulumu
Projenize eklediğiniz bağlantılı modüllerin (dependency) Azure üzerinde de yüklenmesi için proje klasöründe bulunan requirements.txt
dosyasına her satır bir eklenti olacak şekilde şu formatta eklenmesi gerekiyor: feedparser==5.2.1
. Bu eklemeyi de yaptıktan sonra fonksiyon kodumuzu aşağıdaki şekilde değiştirebiliriz:
import logging, feedparser, json
from pprint import pprint
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
feed_url = 'https://www.buzzfeed.com/lol.xml'
feed = feedparser.parse( feed_url )
links = []
for item in feed.entries:
pprint(item)
links.append( {"title": item[ 'title' ]} )
return func.HttpResponse( json.dumps( links ) )
Bu noktada kodunuzu yerel olarak test edebilirsiniz. F5
tuşuna bastığınızda VS Code yerel olarak kodu çalıştırıp lokal bir sunucu oluşturuyor ve HttpTrigger
test edebileceğiniz bağlantı URL’sini terminal penceresinde size veriyor.

Resim -5
Lokal olarak fonksiyonu çalıştırma (debug)
Ctrl tuşu basılı olarak bağlantıya tıkladığınızda fonksiyonunuz bir browser penceresinde açılarak trigger oluyor ve çıktısı ekrana geliyor.
Python Projesini Azure Functions Üzerine Yükleme
Python kodunuz içerisinde herhangi bir harici modül kullanmadıysanız yükleme işlemi çok basit. Yine yan çubukta bulunan “Functions” kutusu üzerinde bulunan “Deploy to Function App..” tuşuna basarak projenizi hızlı bir şekilde azure üzerine yükleyebilirsiniz. Bu varsayılan yüklemede kod bir zip dosyası olarak karşıya yükleniyor ve bu zip dosyası içerisinden çalıştırılıyor.
Ancak python çekirdek kütüphaneleri haricinde modüller kullandıysanız, kodun karşıya yüklendiğinde gereksinimlerinin de yüklenmesi ve derlenmesi gerekiyor. Bunun için deploy işlemi tamamlandıktan sonra Azure portal üzerinde Home > App Services > (Uygulama Adı) > Configuration
içerisinde bulunan WEBSITE_RUN_FROM_PACKAGE
değişkeninin silinmesi gerekiyor. Ayrıca, Python kodunun Azure üzerinde derlenmesi için iki yeni değişken eklemeniz gerekli:
ENABLE_ORYX_BUILD
=trueSCM_DO_BUILD_DURING_DEPLOYMENT
=true
Bu değişkenleri Azure Portal üzerinden projenize ekledikten sonra VS Code terminal penceresinde aşağıdaki kodu çalıştırarak projenizi Azure üzerinde derlenmesi için tekrar yükleyebilirsiniz.
func azure functionapp publish functions-projenizin-ismi --build remote
Proje build işlemi aşamalarını output penceresinde görebilirsiniz. Paketinizin Azure üzerine yüklenmesi ve derlenmesi tamamlandığında aşağıdaki şekilde bir ekran göreceksiniz.

Resim – 6
Python kodunun Azure Functions üzerinde derlenmesi
Python kodunuz artık Azure Functions üzerinde çalışmaya hazır. Derleme sonrasında size verilen Invoke URL
adresini kullanarak kodunuzu tetikleyebilirsiniz.
Özet
Bu ilk yazımda size dış modüllere bağlı bir python projesini Azure Functions üzerinde nasıl çalıştırabileceğinizi kısaca anlatmaya çalıştım. Azure Functions geliştirilen python desteği ile birlikte artık daha fazla kütüphane kullanılmasına imkan sağlıyor. Farklı tetikleme metodları, entegrasyonlar ve veri kaynaklarına bağlantı seçenekleri sayesinde Azure Functions backend mimarisi ve IoT için oldukça fazla kullanılacak gibi görünüyor.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
www.mshowto.org
TAGs : azure functions, azure functions deploy, azure functions python, HttpTrigger, python, vs code