Azure Logic App ve Data Factory kullanarak e-posta ile bilgilendirme akışı

Azure Logic Apps otomatik iş akışları oluşturmak ve çalıştırabilmek için sunulan bir bulut hizmetidir. Bu işlem kod yazmadan ya da çok az kod ile yapılabilir. Azure üzerinde farklı servislerle yapılan işlemler Logic App üzerinde oluşturulan akışlarla otomatik hale getirilebilir.

Logic app üzerindeki akışı kontrol etmek için tanımlı bağlayıcılar (connectors) bulunur. Bunlar, oluşturulan akış (workflow) üzerinde belirli sıraya göre işletilmektedir. Logic App’te akışın ilk adımı her zaman bir tetikleme (trigger) işlemi olmak zorundadır. Tetikleme işlem gerçekleştikten sonra akışın diğer adımları (actions) çalıştırılır.

Azure Data Factory üzerinden tetiklenen ve bir bilgilendirme e-postası gönderen örnek bir akışın nasıl oluşturulduğunu inceleyelim:

Logic App servisi oluşturma

Azure Portal üzerinden arama kutusuna Logic App yazarak servis oluşturma sayfasında gerekli bilgiler girilir.

  • Resource Group: Önceden tanımlı bir kaynak grubu varsa o seçilir. Yeni kaynak grubu oluşturmak için Create new tıklanarak yeni bir grup oluşturulabilir.
  • Logic App name: Logic app servisine bir ad verilir.
  • Plan type: Logic App servisi iki kullanım modeliyle oluşturulabilir (Standart ve Consumption). Consumption modelinde, servis çalıştıkça maliyet oluşturduğu için Standart modele göre çok daha ucuzdur. Bu örnek için Consumption’u seçiyoruz.

Diğer seçenekleri olduğu gibi bırakıp Review + create ve sonrasında Create’i seçerek servis oluşturulur.

Logic App oluşturma ekranı

Yeni oluşturulan kaynak grubu içerisinde Logic App görünecektir.

Örnek senaryodan kısaca bahsedelim: Azure Data Factory üzerinde çalışan akış içerisinde bilgilendirme maili gönderilecek aşamaya gelindiğinde Logic App’e bir HTTP isteği gönderilecek ve bu istek bir tetikleyici (trigger) görevi yapacak. Gönderilen istek içerisindeki parametrelere göre de ilgili kullanıcılara e-posta gönderilecek.

Logic App servisine tıklayıp servis sayfasına girelim. Servis ilk kez oluşturulduğu için gelen ana sayfada Templates başlığı altındaki Blank Logic App bağlantısına tıklayalım.

Arama kutusuna “http” yazarak alt tarafta listelenen When a HTTP request is received tetikleyicisine tıklayalım.

Burada HTTP POST URL kısmında başlangıçta herhangi bir şey yazmayacaktır. Logic App’I dışarıdan çağırabilmek için bu URL kullanılacak ama önce Logic App’I bu haliyle kaydetmemiz gerekiyor. Save’e tıklayarak kaydettikten sonra URL adresi oluşturulacaktır.

İkinci olarak, Logic App’e gönderilecek isteğinin içeriğini de burada belirtmek gerekiyor. Örneğimiz bir e-posta gönderme örneği olacağı için gönderilecek e-postanın konusu, alıcı adresi ve mesajı parametrik olarak göndereceğimiz belirmek için bunları Request Body JSON Schema kısmında JSON biçiminde belirtiyoruz.

{
“properties”: {
“message”: {
“type”: “string”
},
“receiver”: {
“type”: “string”
},
“subject”: {
“type”: “string”
}
},
“type”: “object”
}

Son durumda designer içinde aşağıdaki gibi bir durum olmalıdır:

HTTP adımından sonra e-posta göndermek için Office 365 Outlook bağlayıcısı eklememiz gerekiyor. HTTP kutusunun alt tarafına gelindiğinde + simgesine tıklanarak yeni bir kutucuk ekliyoruz.

Arama kutusuna mail yazarsanız hemen alt tarafta Outlook simgesi görünecektir.

Bu simgeye tıklayınca gelen seçenekler arasında Send an email (V2)’yi seçelim.

Sonraki ekranda Sign in’e tıklayıp açılan pencerede e-posta hesabı bilgilerini giriyoruz.

Giriş yaptıktan sonra Outlook kutusunun alt tarafında e-posta adresinin görünüyor olması gerekir.

Azure Data Factory akışından Logic App tetiklendiğinde belli parametreleri Logic App’e göndreceğimizden bahsetmiştik. HTTP tetikleyicisi içinde JSON biçiminde tanımladığımız messagereceiver ve subject parametrelerini son adımda oluşturduğumuz Outlook asımı içerisinde ilgili yerlerine koyalım.

To kısmına gelip tıkladığınızda sağ tarafta yeni bir pencere açılacak (Dynamic content ve Expresssion). Buradaki kutucuğun hemen altında yer alan When a HTTP request is received satırında “See more”a tıkladığınzda, HTTP nesnesi içinde tanımlanan parametrelerinin bir listesi gelecek.

Bu listedeki parametreleri ilgili yerlerine sürükleyip bırakıyoruz. To — receiver, Subject — subject ve Body — message şeklinde olmalı.

Save diyerek Logic App akışını kaydediyoruz.

Data Factory servisi oluşturma

İkinci adımda, Logic App ile iletişime geçecek Azure Data Factory servisini oluşturmamız gerekiyor.

Data Factory kısaca, verinin kaynak sistemlerden alıp hedef sistemlere aktarılmasını sağlayan bir veri aktarım aracıdır.

Azure portal üzerinde Create Resource ekranından arama kutucuğuna “Data Factory” yazıyoruz ve Create’e tıklıyoruz.

Resource group kısmında ilk adımda oluşturduğumuz kaynak grubunu seçebiliriz. Data Factory’ye bir isim veriyoruz ve Next:Git Configuration ekraına geçiyoruz. Burada Configure Git later’ı seçip herhangi bir kod repository kullanmayacağımızı belitiyoruz.

Diğer ayarları varsayılan olarak bırakabiliriz. Review + create düğmesine tıklayıp sonra da Create ile işlemi tamamlıyoruz.

Kaynak grubumuzun son hali aşağıdaki gibi olmalı:

Data Factory servisine tıklayıp gelen ekranda Launch Studio’ya tıklayıp Data Factory’yi açalım.

Data Factory çok detaylı bir servis. Veri platformları üzerinde verileri aktarmak için kaynak ve hedef bağlantıları tanımları yapmak veya bu kaynaklarda dönüşümler yapmak için Data Flow’lar oluşturmak gibi birçok işlevi bulunuyor fakat bizim örneğimizde bunlara değinmeyip sadece bir akış (pipeline) oluşturup bunun içinden Logic App’e istek göndereceğiz.

Sol taraftaki Author menüsünden Pipeline’ı ve yanındaki üç noktaya tıklayarak New pipeline’ı tıklayarak boş akış ekranını açıyoruz.

Boş ekranda, ortadaki Parameters sekmesinin altında New’a 3 kez tıklayarak üç adet parametre ekliyoruz. Bu parametrelerin isimleri de, Logic App içerisinde tanımladığımız parametrelerle aynı: receiversubject ve message.

Soldaki Activities bölümündeki General başlığı altında Web aktivitesini sürükleyip boş alana (pipeline’ın içine) bırakıyoruz.

Eklediğimiz Web aktivitesini seçili duruma getirip aşağıdaki Settings sekmesinden sırasıyla şu bilgileri giriyoruz:

  • URL : Logic App’te HTTP tetikleyicisinin URL kısmında yer alan değer
  • Method : POST
  • Body : Bu kısımda, Parameters kısmında tanımladığımız değerleri otomatik olarak almasını ve HTTP POST isteği içinde göndermesini belirtiyoruz. Tanımlanan değerleri almasını pipeline().parameters.xxx ile sağlıyoruz.
{
"receiver" : "@{pipeline().parameters.receiver}",
"subject" : "@{pipeline().parameters.subject}",
"message" : "@{pipeline().parameters.message}"
}

Son olarak bu parametrelerin de değerlerini yazalım. Pipeline içinde boş bir yere tıklayınca al taraftaki Parameters sekmesindeki değerlerin yanındaki kutulara içerikleri yazacağız.

Receiver olarak bir e-posta adresi, subject olarak bir konu başlığı yazıyoruz. Message için ise e-postanın içinde görünmesini istediğimiz metni yazıyoruz.

Oluşturduğumuz akışı kaydetmemiz lazım. Üst taraftaki Publish all düğmesine tıklyoruz ve sağ tarafta gelen pencerenin altındaki Publish’e tıklayıp kayıt işlemini tamamlıyoruz.

Sıra geldi test etmeye. Bunun için önce Data Factory’de oluşturduğumuz akışı çalıştıracağız ve o da isteği göndererek Logic App’i tetikleyecek.

Üst tarafta bulunan Debug düğmesine basıp akışı çalıştıralım. Sağ tarafta parametre ekranı gelecek. Parametre değerleri zaten girilmiş olduğundan OK’ye tıklayarak devam edebiliriz.

Çalışma başarılı bitince Output sekmesinde Status = Succeeded şeklinde ekranda görüntülenir.

Kısa süre sonra da receiver olarak belirttiğiniz adrese e-posta ulaşması gerekiyor.

Logic App’in çalışma durumunu da Logic App servis sayfasında Run history sekmesinde görebiliyoruz.

Logic App’imiz bir kez çalıştı ve sadece bu çalışma Azure’da maliyet oluşturdu.

Logic App ve Data Factory ile ilgili daha fazla bilgiyi Microsoft dokümanlarından ulaşabilirsiniz:

https://learn.microsoft.com/en-us/azure/logic-apps/

https://learn.microsoft.com/en-us/azure/data-factory/