Azure Logic App

Wprowadzenie

Czy również Tobie zdarza się, że czasami potrzebujesz przygotować jakiś proces lub przepływ (na przykład skopiowanie danych lub pliku z jednej usługi do drugiej)? Na początku wygląda to na proste zadanie, ale z każdą linijką kodu widzisz, że koniec się oddala? A może masz potrzebę sprawdzić działanie jakiejś usługi i chciałbyś zrobić to w ciągu kilku minut, aby ocenić, czy warto inwestować czas w dane rozwiązanie?

Tytułowe Azure Logic App jest właśnie taką usługą dostępną w ramach chmury Microsoftu. Umożliwia tworzenie przypływów, które mogą działać w ciągu kilku minut, bez pisania kodu i skupieniu się tylko na właściwym problemie.

Czym jest Azure Logic App?

Azure Logic App jest usługą, która istnieje na rynku już dłuższy czas. Ale mam wrażenie, że wiele osób za bardzo nic o niej nie wie. A co za tym idzie, nie próbuje jej wykorzystywać w swoich projektach. Szkoda, bo są sytuacje, w których może się fajnie sprawdzić.

W Azure Logic App budujemy przepływ w sposób wizualny. Mamy kreator/diagram, w którym definiujemy kolejne kroki przepływu. Każdy krok wykonuje jakąś operację. Dzięki ponad 200 łącznikom (connectors) mamy możliwość pobrania danych lub wykonania jakieś operacji w różnych usługach. Zaczynając od usług Azure, poprzez Twitter, Google, Facebook, a kończąc na takich aplikacjach jak SAP, czy Salesforce. Dokładną listę łączników można znaleźć na stronie https://docs.microsoft.com/en-us/connectors/connector-reference/connector-reference-logicapps-connectors. Można z tego skorzystać w ciekawy sposób.

Darmowy kurs Visual Studio

Pracując z setkami programistów, zauważyłem, że większość osób nie pracuje efektywnie w Visual Studio. W skrajnych przypadkach korzystali z kopiowania z wykorzystaniem menu Edit. Wiem, że to dziwne, ale naprawdę niektórzy tak pracują. Dlatego postanowiłem stworzyć kurs Visual Studio – aby pomóc koleżankom i kolegom w efektywniejszej pracy.

Przygotowałem 30 lekcji e-mail, w których pokażę Ci, w jaki sposób pracować efektywniej i szybciej w Visual Studio. Poznasz dodatki, bez których nie wyobrażam sobie pracy w tym IDE.

Po więcej informacji zapraszam na dedykowaną stronę kursu: Darmowy Kurs Visual Studio.

Quiz C#

Ostatnio przygotowałem również quiz C#, w którym możesz sprawdzić swoją wiedzę. Podejmiesz wyzwanie?

Kiedy wykorzystać Azure Logic App?

Osobiście Azure Logic App wykorzystuję w dwóch scenariuszach. Po pierwsze do integracji różnych usług z moją aplikacją. Na przykład pobrania jakichś danych, przetworzenia ich i dodania do naszego systemu. Dzięki wbudowanym łącznikom mogę w kilka minut przygotować prostą aplikację, która połączy się np. w OneDrive, ściągnie dane z arkusza Excela i przerzuci je do naszej aplikacji.

Gdybym chciał zrobić to za pomocą kodu, zajęłoby mi to więcej czasu. A z drugiej strony koszt takiej synchronizacji danych, przy wykonywaniu jej raz dziennie, jest bardzo mały. Dużo mniejszy niż ewentualny czas poświęcony na napisanie kodu (o kosztach będzie dedykowany wpis).

Po drugie Azure Logic App wykorzystuję do prototypowania wykorzystania różnych usług (głównie Azure), taki PoC (Proof of concept). Mogę szybko przygotować jakiś przepływ, w którym przetestuję działanie jakiejś usługi. Później na podstawie tego mogę podjąć decyzję, czy idziemy w dane rozwiązanie. A jeśli tak, to czy zostajemy dalej przy Azure Logic App, czy próbujemy to przepisać, w sytuacji gdy koszty działania byłyby znacząco mniejsze. Oczywiście uwzględniając sam koszt przygotowania takiego rozwiązania.

Przykład aplikacji w Azure Logic App

Myślę, że najlepiej zobaczyć jak działa Azure Logic App w praktyce. Na potrzeby omawiania tej usługi przygotowałem dwa przykłady. Jeden dość prosty, a drugi bardziej rozbudowany. Pierwszy znajdziesz poniżej, a drugim zajmiemy się w kolejnym wpisie.

W pierwszym przykładzie chcemy w sposób cykliczny (np. co 1 godzinę) dla jakieś lokalizacji (np. Olsztyn) pobrać informację o pogodzie z serwisu openweathermap.org i wynik zapisać w Azure Storage. Co widać na poniższym diagramie:

Azure Logic App diagram

Do skorzystania z api openweathermap.org należy wcześniej utworzyć konto w portalu, po czym wygenerować klucz uwierzytelniający. Podobnie z kontem Azure Storage, do którego będziemy zapisywać pobrane dane. Tego już nie będę pokazywał w tym wpisie.

Utworzenie Azure Logic App

Aby utworzyć nowe Logic App należy zalogować się do portalu Azure, wyszukać Logic App w liście usług, a następnie skorzystać z przycisku Add. Ewentualnie możesz skorzystać z bezpośredniego linku do formularza: https://portal.azure.com/#create/Microsoft.EmptyWorkflow

W formularzu poza podaniem standardowych informacji jak subkrybcja, grupa zasobów, czy lokalizacja, podajemy nazwę nowej aplikacji. W przykładzie użyłem GetWeatherDemo, co widać poniżej.

Formularz dodania Azure Logic App

Po utworzenie aplikacji możemy do niej przejść i zostaniemy przekierowani do kreatora. W nim możemy wybrać jeden z podstawowych triggerów (wyzwalaczy) lub skorzystać z gotowych szablonów aplikacji. Polecam przejrzeć sobie niektóre szablony, bo stanowią one świetne przykłady do nauki.

Na potrzeby przykładu wybierzemy trigger Recurrence (zaznaczony czerwoną ramką poniżej), które będzie uruchamiał aplikację co jakiś czas:

Azure Logic App kreator po utworzeniu

Po jego wybraniu przechodzimy do właściwego kreatora, gdzie będzie dodany box dla wyzwalacza, w którym ustawiłem interwał na jedną godzinę.

Azure Logic App recurrence trigger

Pobranie informacji o pogodzie

Następnie dodajemy krok z wykorzystaniem przycisku „+ New step”. W nowym oknie wybieramy akcję HTTP, która umożliwi wykonanie żądania do serwisu openweathermap.org:

Azure Logic App add http action

Po dodaniu nowej akcji, musimy ją skonfigurować. W pierwszej kolejności określamy typ żądania. W naszym przypadku jest to GET (punkt 1 na zrzucie poniżej). Następnie podajemy adres (http://api.openweathermap.org/data/2.5/weather – punkt 2). A na końcu podajemy dwa parametry w sekcji Queries, która zostaną przekazane w query stringu. Pierwszym parametrem jest q – olsztyn,pl (punkt 3), który określa lokalizację, dla której szukamy pogodę. Drugi APPID (punkt 4) określa klucz uwierzytelniający, który wygenerowaliśmy w openweathermap.org po założeniu konta.

Skonfigurowany krok widać na zrzucie poniżej.

Azure Logic App http action

Możemy również skonfigurować inne elementy żądania HTTP, takie jak treść (body), nagłówki (Headers), pliki cookie (Cookie). Ale w naszym przykładzie nie jest to potrzebne.

Zapis odpowiedzi w Azure Storage

Mając już pobraną informacje o pogodzie, chcemy ją zapisać w Azure Storage. W tym celu dodajemy nowy krok. W wyszukiwarce w nowym oknie wpisujemy Azure Blob (punkt 1) i wybieramy akcję Create blob (punkt 2).

Azure Logic App add create blob action

Na początku musimy dodać nowe połączenie do Azure Storage. W tym celu podajemy nazwę połączenia. W moim przypadku jest to WeatherStorageConnection (punkt 1). A następnie wybieramy Azure Storage z dostępnej listy (punkt 2). Wcześniej utworzyłem nowy Azure Storage, do którego dodałem kontener weather.

Azure Logic App add connection to Azure Storage

W samej konfiguracji kroku Create Blob musimy określić kilka rzeczy. Po pierwsze wybrać kontener, do którego ma zostać dodany nowy plik. W tym celu klikamy ikonkę folderu z prawej strony pola Folder path (punkt 1) i w popupie wybieramy interesujący nas kontener (punkt 2).

Azure Logic App select container

W kolejnym polu określamy nazwę naszego pliku. Chcemy, aby każdy plik był zapisywany pod nazwą w stylu [wygenerowany guid].json. W tym celu posłużymy się czymś takim, co nazywa się Dynamic Content. Za pomocą tego mechanizmu możemy w konfiguracji kroku używać dynamicznych elementów.

Azure Logic App Dynamic Content

Azure Logic App udostępnia dwa rodzaje Dynamic Content:

  • Dynamic content – wynik wykonania jakiejś wcześniejszej akcji (np. żądania http)
  • Expression – wynik wykonania jakiejś wbudowanej funkcji (np. guid)

W przypadku nazwy pliku posłużymy się wbudowanym Expression. W popupie, który się pojawia, gdy klikniemy w pole Blob Name, przechodzimy na zakładkę Expression (punkt 1). Tam w pole wyszukiwania wpisujemy guid() (pole będzie nam podpowiadać dostępne wartości) i na końcu klikamy w przycisk OK (punkt 3). W efekcie pojawi się nam w polu Blob name różowy prostokąt z nazwą funkcji. Za nim możemy dodać .json (punkt 4), co w efekcie powoduje, że pliki zapisywane w Azure Storage będą nazwę [wygenerowany guid].json:

Azure Logic App set blob name

Zawartość pliku (pole Blob content) skonfigurujemy również z wykorzystaniem Dynamic Content. W pierwszej zakładce (punkt 1), w polu wyszukiwania wpisujemy Body (punkt 2). W wynikach wyszukiwania zobaczymy, że z kroku HTTP mamy dostępne pole Body (wynik żądania – punkt 3). Wybieramy go i w efekcie w polu Blob content mamy zielony prostokąt (punkt 4):

Azure Logic App set blob content

Tak przygotowaną Azure Logic App możemy zapisać i uruchomić.

Uruchomienie Azure Logic App

Po zapisaniu, nasze Azure Logic App będzie już działać i wykonywać się co godzinę. Możemy również sami ręcznie wywołać aplikację, korzystając z przycisku Run (punkt 1). Po kilku chwilkach zobaczymy efekt wykonania aplikacji. Przy każdym z kroków będzie informacja o statusie (np. zielony ptaszek tak jak przy punktach 2).

Dodatkowo możemy kliknąć w akcje, aby zobaczyć więcej szczegółów z jej wykonania. Poniżej rozwinąłem krok HTTP. W nim możemy między innymi zobaczyć treść odpowiedzi (punkt 3).

Azure Logic App run

W Azure Storage znajduje się zapisany plik. Jego nazwa, jak widać, jest taka, jak skonfigurowany szablon.

Azure Logic App file in Azure Storage

Pobranie klucza z Azure Key Vault

Nasz przykład ma jeden drobny problem. Klucz uwierzytelniający, który używamy do pobrania informacji o pogodzie, znajduje się bezpośrednio w aplikacji. Lepszym rozwiązaniem jest przechowywanie go w Azure Key Vault. Przy okazji zobaczymy, jak łatwo zrobić to w Azure Logic App.

Diagram poniżej pokazuje zmodyfikowany flow o pobranie klucza do api z Azure Key Vault.

W pierwszej kolejności utworzyłem nowy Azure Key Vault i dodałem do niego sekret o nazwie apikey.

Azure Logic App secret in Azure Key Vault

Następnie dodajemy nowy krok między Recurrence, a HTTP (punkt 1). W polu wyszukiwania wpisujemy Key Vault (punkt 2) i w liście wyników wybieramy Get secret (punkt 3).

Azure Logic App get secret

Teraz musimy skonfigurować połączenie do Azure Key Vault. W polu Vault name (punkt 1) wpisujemy nazwę Azure Key Vault, w którym znajduje się nasz sekret. Wybieramy tenanta (punkt 2), a następnie logujemy się za pomocą przycisku Sign in (punkt 3) na konto, które będzie wykorzystywane do pobierania sekretów (konto musi mieć do tego uprawnienia).

Azure Logic App add connection to Azure Key Vault

Po zalogowaniu w liście rozwijanej będziemy mieli listę wszystkich sekretów. Wybieramy ten, w którym znajduje się klucz do api.

Azure Logic App select secret

Użycie klucza z Azure Key Vault

Na końcu pozostaje nam jeszcze użyć pobrany klucz z Azure Key Vault w kroku HTTP. W tym celu skorzystamy podobnie jak wcześniej z Dynamic Content.

Przechodzimy do kroku HTTP. Z pola, gdzie znajduje się klucz uwierzytelniający (punkt 1), usuwamy wartość i korzystamy z Dynamic Content. W popupie w polu wyszukiwania wpisujemy value (punkt 2). W liście wyników widzimy wartość value z kroku Get secret (punkt 3). Wybieramy go i w polu z wartością klucz pojawia nam się niebieski prostokąt (punkt 1), który określa, że w tym miejscu zostanie wykorzystana wartość sekretu pobrana wcześniej z Azure Key Vault.

Azure Logic App use secret

Możemy teraz zapisać Azure Logic App i ją wykonać. Efekt będzie taki sam, tylko, że tym razem klucz do api zostanie pobrany z Azure Key Vault. Co widać poniżej.

Azure Logic App run with Azure Key Vault

Podsumowanie

Mam nadzieję, że udało mi się pokazać Ci, że korzystanie z Azure Logic App nie jest trudne oraz że łatwo można utworzyć aplikację korzystającą z różnych usług Azure. Co prawda, potrzeba chwilkę, aby przyzwyczaić się do działania kreatora, ale już po chwili można szybko budować aplikacje.

W kolejnym wpisie o Azure Logic App pokażę Ci trochę bardziej rozbudowany przykład, w którym przedstawię kolejne funkcjonalności tej usługi Azure.

5 thoughts on “Azure Logic App

  • Pingback: dotnetomaniak.pl
  • Całkiem fajny tutorial Logic App. Szkoda, że nie poruszyłeś kwestii kontektorów i pricingu. Według mnie to największa niewiadoma tego rozwiązania, koszt uruchomienia jest tylko teoretycznie niski w modelu Pay as you go, ale składa się na to całkiem sporo czynników, co może skutkować jednak sporymi kosztami.

    • Dzięki Adam za komentarz.

      Planuje jeszcze dwa wpisy o Azure Logic App. Pierwszy, w którym pokaże trochę bardziej rozbudowany przykład z dodatkowymi informacjami o samym procesie tworzenia aplikacji.

      Natomiast drugi będzie właśnie o kosztach, gdzie na kilku przykładach pokażę kiedy Azure Logic App się opłaca, a kiedy będzie sporo droższy niż na przykład Azure Function.

      • Seria zapowiada się całkiem ciekawe szczególnie porównanie Azure functions z App Logic, teoretycznie mogą robić to samo, z tą różnicą, że Logic Appsy to układanie klocków :D. Mam nadzieję, ze poruszysz również kwestię deploya na różne stanowiska.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *