Suche

über alle News und Events

 

Alle News

 

Wir haben während unseres...

Read more

Azure Functions benötigen oft einen...

Read more

In der heutigen Zeit nehmen Erreichbarkeit,...

Read more

Viele unserer Kunden überlegen derzeit, was sie in...

Read more

Lösungsansatz – was benötigt man dafür:

  • Einen...
Read more

Es gibt im Preview die Möglichkeit Azure Blob...

Read more

Die wichtigste Konferenz zu Integration auf der...

Read more

In diesem Blogeintrag werden wir drei sichere und...

Read more

Im vergangenen Jahr war bei uns in Hamburg viel in...

Read more

Heutzutage werden Token für die Authentifizierung...

Read more

How-to: Send Big Data from Orchestration to Blob

Bei Datenübertragungen stossen wir teilweise an Grenzen, wie beispielsweise die Grösse einer Datendatei. Gerade bei hybriden Schnittstellenlösungen können solche Hindernisse entscheidend sein. Beim folgenden Beispiel gehen wir von einer Schnittstelle aus, die grosse Daten über BizTalk und Azure versendet. Hier treffen wir auf ein solches Problem bei der Übertragung. Wir behandeln dabei nicht alle Bereiche, die im Abschnitt «Ablauf» beschrieben sind, sondern gehen nur auf die komplexen Problematiken ein.

Problematik

Die Erweiterung des Datatransfer-Frameworks "BigData" wurde erstellt, weil bei grösseren Dateien die LogicApps auf Limitierungen gestossen sind. Konkret konnte der HTTP-Trigger der LogicApp keine Requests entgegennehmen, die grösser waren als 105 MB.

Limits and configuration reference guide - Azure Logic Apps | Microsoft Docs
 

Lösungsansatz

Um diese Limitierung zu umgehen, wurde eine Logic App (Standard) erstellt, da dort die Limitierungen manuell angepasst werden können. Leider funktionierte aber auch diese Lösung nicht, da wir auf einen Bug gestossen sind. Die Anpassung an den Limitierungen ist grundsätzlich möglich, jedoch nicht für den HTTP-Trigger: LogicApp Standard - 413 Request entity too large - Microsoft Q&A

Die bestehende Lösung schickt nun direkt aus der Orchestration über einen Helper in den Storage Account. In der LogicApp Consumption wurde der Trigger dementsprechend auf einen BlobStorage-Trigger angepasst, welcher erst bei 1 GB eine Limitierung aufweist.

Falls die Limitierung von 1 GB künftig nicht ausreichen sollte, müsste auf eine LogicApp Standard umgestellt und dort die Limitierung des Triggers hochgestuft werden.

 

Ablauf

BizTalk Helper Klasse

TLS

Am Anfang der Methode in der Helper-Klasse, wird das Sicherheitsprotokoll vom standardmässigen TLS1.0 auf TLS1.2 umgestellt, da man ansonsten in den StorageAccount-Properties auf TLS1.0 umstellen müsste.

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

Dies kann auch in Azure konfiguriert werden:


Cloud Storage Account

Im nächsten Schritt wird in einer Helper-Klasse, anhand des Strings „sendPort“, der den ConncetionString beinhaltet, eine Verbindung zum StorageAccount aufgebaut und der Container "bigdata" ausgewählt. Anhand der Metadata-Property "message.FileName" wird ein Blob mit dem entsprechenden Namen erzeugt:

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(sendPort);

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("bigdata");

// Retrieve reference to a blob by the given filename
CloudBlockBlob blockBlob = container.GetBlockBlobReference(message.FileName);
 

Anschliessend wird der FileContent als Byte-Array als BlobContent hochgeladen:

// Create or overwrite the blob with contents from the message
blockBlob.UploadFromByteArray(content, 0, content.Length);


Azure

KeyVault

Im KeyVault werden die neuen Secrets "AZURE-StorageAccountConnectionString" für die spätere Verwendung angelegt.




Trigger / LogicApp

"When a blob is added or modified in Azure Storage"

Der Trigger ist mit dem StorageAccount und dem Container bigdata verbunden. Es wird jede Minute geprüft, ob ein neuer Blob hinzugefügt wurde.

Die JSON-Response wird geparsed, um die Properties verwenden zu können.

Get blob Content

Anschliessend holen wir uns mit "Get blob Content" den FileContent. Dieser kann dann verarbeitet und zum Schluss an ein Zielsystem geschickt werden.

 

Fazit

Es gibt viele Wege, grosse Datenmengen zu übertragen. Die in diesem Artikel beschriebene Art ist nur eine Variante, die spezifisch für ein Übertragen mit BizTalk und Azure verwendet werden kann. Jedoch stellen wir fest, dass auch in der Cloud immer wieder (Grössen-) Grenzen gesetzt werden und man sich gut überlegen sollte, welche Architektur man verwendet.

 

Das ist Beitrag von Alain Germann, QUIBIQ Schweiz AG 

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz