Basierend auf einem Code-Beispiel aus dem GitHub-Sample-Repository von Azure bauen wir uns eine Azure WebApp. In der Microsoft Cloud erstellt man immer zunächst eine Basis-Web-App – sozusagen als Gerüst – und lädt erst später den eigentlichen Applikations-Code hoch.

Um eine Web App unter Azure erstellen und betreiben zu können, bedarf es zunächst eines App Service Plans. Ein solcher App Service Plan definiert den Speicherort, die Größe und die Funktionen der Webserver-Farm, in der die App gehostet wird. In der GUI kann man den Service Plan quasi on-the-fly beim Erstellen der Web App (hierzu sucht man am einfachsten im Azure Marketplace nach „Web-App“) erzeugen. Der Name wird bereits vorgeschlagen. Aber Achtung: Azure bietet per Default die SKU „Premium V2 P1v2“ an.

Der App Service Plan definiert Speicherort, Größe und Funktionen der Webserver-Farm, in der die App gehostet wird.
Der App Service Plan definiert Speicherort, Größe und Funktionen der Webserver-Farm, in der die App gehostet wird. (Bild: Drilling / Microsoft).

Klickt man hier auf „Größe ändern“ kann man für ein Demo-Szenario auch einen Service-Plan aus dem Bereich „Dev/Test“ wählen. Der vorausgewählte Service-Plan S1 bietet 100 ACUs bei 1,75 GB Arbeitsspeicher und schlägt mit geschätzt 61 Euro/Monat zu Buche. Unter ACU versteht Microsoft das Konzept einer Azure-Compute-Einheit (Azure Compute Unit). Die ACU dient dazu, die Rechenleistung (CPU) zwischen den Azure-SKUs besser vergleichen zu können. Aktuell ist der ACU-Wert auf einem kleinen virtuellen Computer (Standard_A1) auf den Standardwert „100“ festgelegt. An den übrigen SKUs kann dann ungefähr abgelesen werden, wie viel schneller die jeweilige SKU einen Standard-Benchmark ausführt.

Die auf größere Workloads ausgelegten Produktions-Servicepläne im Überblick.
Die auf größere Workloads ausgelegten Produktions-Servicepläne im Überblick. (Bild: Drilling / Microsoft).

Allgemein umfasst der Azure-App-Service sämtliche zum Erstellen von Websites, mobilen Back-Ends und Web-APIs für beliebige Plattformen oder Geräte benötigen Komponenten. Die Pläne „Free“, „Shared“ (Vorschau) und „Basic“ dienen vorrangig der Möglichkeit, Apps im Rahmen eines bestimmten Budgets testen können. Die Pläne „Basic“, „Standard“ und „Premium“ dagegen eignen sich für Production-Workloads und werden auf dedizierten virtuellen Computer-Instanzen ausgeführt. Daher die Vorauswahl.

Jede Instanz unterstützt mehrere Anwendungen und Domänen. Der „Isolated“-Plan hostet Apps in einer privaten, dedizierten Azure-Umgebung und eignet sich für Apps, die eine sichere Verbindung mit dem lokalen Netzwerk oder zusätzliche Leistung und Skalierung erfordern. App Service-Pläne rechnet Microsoft immer sekundengenau ab.

Für einen einfachen Test kann man den App-Service-Plan B1 im Bereich „Dev/Test“ verwenden

Für einen einfachen Test kann man also auch den Plan B1 verwenden, der im Gegensatz zu S1 lediglich eine manuelle Skalierung bietet. Wer nur die Demo nachstellen will kann auch F1 (Free) nehmen. Nach einem Klickt auf „Überprüfen + erstellen“ zurück im Dialog „Web-App erstellen“ wird die Web App angelegt. Wer das Ganze in der Cloud Shell erledigen will, muss erst einen App Service-Plan erstellen, hier mit der SKU „Free“ (F1).

az appservice plan create –name azditappserviceplan –resource-group myResourceGroup –sku Free

Beispiel-Anwendung bereitstellen

Jetzt muss nur noch der eigentliche Code hochgeladen werden. Der App Service unterstützt verschiedene Möglichkeiten zum Bereitstellen von Inhalten für eine Web-App. In unserem Beispiel folgen wir im Azure-Portal dem Link für die neue Web-App im Modul „App Services“.

Die Resizer-Webapplikation im Azure-Portal.
Die Resizer-Webapplikation im Azure-Portal. (Bild: Drilling / Microsoft).

Im darauffolgenden Menüpunkt „Übersicht“ zu unserer Resizer WebApp finden wir nun die eigentliche Web-App-URL. Diese präsentiert momentan nur die Azure Web-App-Beispiel-Anwendung – und direkter darunter den FTP-Hostnamen und den FTPS-Hostnamen, falls man die Inhalte mehr oder weniger manuell via FTP hochladen möchte.

Die URL zu unserer Web App findet sich in der Übersicht.
Die URL zu unserer Web App findet sich in der Übersicht. (Bild: Drilling / Microsoft).

Weiter unten im links eingehängten Navigationsbereich findet sich dagegen der Abschnitt „Bereitstellung“ das Menü „Schnellstart“ mit diversen Beispielcode-Vorlagen und darunter dann das „Bereitstellungscenter“. Dieses bietet diverse Optionen, die gesamt Bereitstellung und den Betrieb der Anwendung mit den dort angezeigten Tools als CI/CD-Pipeline zu organisieren. Zudem wird auch eine manuelle Bereitstellung (Push/Synchronisierung) via OneDrive, Dropbox , Git-/Mercuria (External) oder – wie schon auf der Übersichtsseite gesehen– „FTP“ unterstützt.

Das Bereitstellungscenter lässt sich mit verschiedenen Code-Hosting-Plattformen koppeln.
Das Bereitstellungscenter lässt sich mit verschiedenen Code-Hosting-Plattformen koppeln. (Bild: Drilling / Microsoft).

Klickt man z. B. in der GUI auf „GitHub“ muss man den Zugriff mit einem Klick auf den „Autorisieren“-Button am Fuß der Seite zunächst autorisieren, wozu es eines gültigen GitHub-Accounts bedarf. Nach erfolgreichem Login klickt man im GitHub-Popup auf den Knopf „Authorize AzureAppService“. Im Ergebnis steht jetzt im Bereitstellungscenter im Bereich CI/CD bei GitHub der entsprechend autorisierte GitHub-Kontoname.

Ohne Autorisierung kein Zugriff auf das Continuous-Deployment-Tool.
Ohne Autorisierung kein Zugriff auf das Continuous-Deployment-Tool. (Bild: Drilling / Microsoft).

Markiert man GitHub und klickt dann auf „Weiter“, kann man den gewünschten Build-Anbieter wählen, in der Regel der „App Service-Builddienst“. Nach einem erneuten Klick auf „Weiter“ lässt sich dann auf der Dialog-Seite „Code“ die entsprechende Organisation, die Repository-URL und der zu verwendende Branch auswählen über die man in seinem Repo verfügt.

Verschiedene Build Services stehen ebenfalls zur Verfügung.
Verschiedene Build Services stehen ebenfalls zur Verfügung. (Bild: Drilling / Microsoft).

In diesem Workshop stellen wir die Web-App allerdings aus dem „öffentlichen“ GitHub-Beispiel-Repository von Azure bereit. Das Beispielprojekt enthält eine ASP.NET MVC-App. Die App akzeptiert ein Bild, speichert es in einem Speicherkonto und zeigt Bilder aus einem Thumbnail-Container an.

Die GitHub-Bereitstellung für die Webanwendung lässt sich per Cloud Shell konfigurieren.
Die GitHub-Bereitstellung für die Webanwendung lässt sich per Cloud Shell konfigurieren. (Bild: Drilling / Microsoft).

Die Webanwendung verwendet die Namespaces „Azure.Storage, Azure.Storage.Blobs“ und „Azure.Storage.Blobs.Models“, um mit dem Azure-Speicherdienst zu interagieren. Dazu konfigurieren wir die GitHub-Bereitstellung für die Webanwendung mit dem Konfigurationsbefehl az webapp deploy source:

az webapp deployment source config –name Resizer-Webapp –resource-group azditresizerrg –branch master –manual-integration –repo-url \ https://github.com/Azure-Samples/storage-blob-upload-from-webapp

Nach wenigen Minuten sollte der Code erfolgreich bereitgestellt worden sein, wie sich der Kommandozeile entnehmen lässt.

Die Shell zeigt die erfolgreiche Code-Bereitstellung an.
Die Shell zeigt die erfolgreiche Code-Bereitstellung an. (Bild: Drilling / Microsoft).

Konfigurieren der Web-App-Einstellungen

Die Beispiel-Webanwendung verwendet die Azure-Speicher-APIs für .NET zum Hochladen von Bildern. Die Anmeldeinformationen für das Speicherkonto werden in den App-Einstellungen für die Web-App festgelegt. Daher fügen wir nun der bereitgestellten App mit dem Befehl…

az webapp config appsettings set

… die App-Einstellungen „AzureStorageConfig__AccountName“, „AzureStorageConfig__ImageContainer“, „ AzureStorageConfig__ThumbnailContainer“ und „ AzureStorageConfig__AccountKey“ hinzu, damit die Webapp auf die oben erstellten Blob-Container zugreifen kann.

Der Zugriff auf den Blob-Container wurde erteilt.
Der Zugriff auf den Blob-Container wurde erteilt. (Bild: Drilling / Microsoft)

Das klappt einerseits in der GUI im Untermenü „Einstellungen / Konfiguration“ durch einen Klick auf „+ Neue Anwendungseinstellung“ oder in der Cloud Shell mit dem folgenden Befehl.

az webapp config appsettings set –name Resizer-Webapp –resource-group azditresizerrg –setting \ AzureStorageConfig__AccountName=azditresitersa AzureStorageConfig__ImageContainer=images AzureStorageConfig__ThumbnailContainer= \
thumbnails AzureStorageConfig__AccountKey= kBJXMWdDRVhEbLH8vo7GnIcEzYVORflQRDP6/LBlngRG3jFlE4aufbkHT1MAuKkoM6n4w/VN463yFws9DleP0Q==

Das Ergebnis sollte etwa so aussehen wie in der vorangestellten Abbildung.

Test

Nun kann man sich über die WebApp-URL mit der neuen Anwendung verbinden und testweise ein oder mehrere Fotos über die Webseite der Anwendung hochladen. Die hochzuladenden Fotos können direkt via Drag and Drop in den Upload-Bereich gezogen werden.

Per Drag and Drop testen wir, ob sich Bilder in den Container hochladen lassen.
Per Drag and Drop testen wir, ob sich Bilder in den Container hochladen lassen. (Bild: Drilling / Microsoft).

Anschließend können wir im Azure-Portal noch einmal verifizieren, dass die Bilder erfolgreich im images-Container des entsprechenden Speicherkontos abgelegt wurden. Der erste Part unseres neuen App-Services, eine Azure-Web-App zum Hochladen von Fotos, ist damit erstellt. In Teil 3 und 4 befassen wir uns dann im Rahmen des serverlosen Teils mit der Bereitstellung einer Azure-Function-App zum Berechnen der Thumbnails, welche dann später ebenfalls von dieser App angezeigt werden.

Die Bilder finden sich nun wie gewünscht im Speicherkonto.
Die Bilder finden sich nun wie gewünscht im Speicherkonto. (Bild: Drilling / Microsoft).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.