FTP-Zugriff auf Windows Azure Blob Storage

FTP-Zugriff auf Windows Azure Blob Storage

Rate This
  • Comments 3

ACHTUNG: Dieser Artikel ist zum Teil veraltet. Er referenziert Azure-Ressourcen, die in der aktuellen Version von Microsoft Azure (Stand: August 2014) nicht mehr unterstützt werden. Es gibt deshalb einen neueren Blog Artikel, der beschreibt, wie die unten beschriebene Lösung aktualisiert werden kann.

Üblicherweise erfolgen Zugriffe auf Windows Azure Blob Storage über die REST-API (bzw. die entsprechenden API-Aufrufe in .NET, Java etc.). Es gibt allerdings auch Szenarien, in denen ein Zugriff via FTP gewünscht wird. Für die Umsetzung eines solchen Szenarios gibt es ein sehr interessantes Projekt auf CodePlex: die so genannte FTP to Azure Blob Storage Bridge. Dabei handelt es sich um einen Windows Azure Cloud Service, der eine einzelne Worker Role umfasst. In dieser ist die FTP-Schnittstelle implementiert. In der Konfiguration der Worker Role ist darüber hinaus festgelegt, dass die Ports 21 und 59860 geöffnet sind. Darüber wird die FTP-Kommunikation abgewickelt, d.h. ein entsprechender FTP-Client kann hierüber FTP-Aufrufe initiieren. Die FTP-Bridge setzt diese Aufrufe dann in entsprechende Speicherzugriffe im Blob Storage um. Die Architektur der Lösung wird in folgender Abbildung skizziert.

image

Abb 1: Architektur der FTP-Bridge-Lösung

Setup

Im folgenden sollen die Schritte beschrieben werden, mit denen die FTP to Azure Blob Storage Bridge konfiguriert und in Windows Azure installiert werden kann.

Herunterladen der FTP-Bridge-Lösung

Die FTP-Bridge-Lösung kann von CodePlex sowohl als fertiges Deploymentpaket als auch als Visual Studio Solution herunter geladen werden. in beiden Fällen erhält man ein ZIP-Paket. 

Anlegen eines Storage Accounts

Für die Datenablage kann ein neuer Storage Account angelegt oder auch ein bestehender verwendet werden. zum Anlegen eines neuen Storage Accounts führen Sie bitte folgende Schritte durch:

  1. Rufen Sie das Windows Azure Managementportal auf: http://manage.windowsazure.com.
  2. Authentifizieren Sie sich mit ihrem Microsoft Account.
  3. Wählen Sie im Menü links den Punkt Storage.
  4. Klicken Sie unten auf das Icon New.
    image
  5. Geben Sie entsprechende Werte für die Felder URL, Region und Subscription an.
    Beachten Sie hierbei, dass Sie idealerweise die gleiche Region angeben, in der Sie später die FTP-Bridge installieren. Dies hat zum einen Performanzvorteile und zum anderen den Vorteil, dass für den Datentransfer zwischen der FTP-Bridge und Blob Storage keine Kosten anfallen (da beide im gleichen Rechenzentrum liegen).
  6. Bestätigen Sie Ihre Eingabe mit Create Storage Account.
  7. Warten Sie einen Moment bis Sie die Bestätigung der erfolgreichen Installation erhalten haben.
  8. Wechseln Sie nun in das Account Dashboard, indem Sie auf den Namen des Storage Accounts klicken.
    image
  9. Klicken Sie unten auf das Icon Manage. Es öffnet sich ein Fenster, welches die Zugriffsschlüssel dieses Storage Accounts anzeigt.
    image
  10. Kopieren Sie sich den Primary Account Key in die Zwischenablage. Dieser wird für die Konfiguration der FTP-Bridge benötigt.

Setzen der Konfigurationsparameter

Im heruntergeladenen Deplyomentpaket befindet sich die Datei ServiceConfiguration.cscfg. In dieser müssen alle erforderlichen Konfigurationsparameter entsprechend der folgenden Tabelle gesetzt werden.

ParameterBeschreibung
StorageAccount Ersetzen Sie die Platzhalter für YOUR_ACCOUNT_NAME und YOUR_ACCOUNT_KEY durch den oben gewählten Account Namen und den zugehörigen Schlüssel.
Mode Soll die FTP-Bridge lokal im Development Storage getestet werden, kann dieser Wert auf Debug gesetzt werden. Für den Windows Azure Storage kann der Wert auf Live gesetzt werden.
ConnectionEncoding Codierung der Übertragungsdaten. Kann auf UTF8 belassen werden.
FtpAccount Accounts, mit denen sich Clients an der FTP-Bridge anmelden können. Diese entsprechen dann Containern im Blob Storage. Dies ist nur ein sehr einfacher Authentifizierungsmechanismus, der aber durch eine eigene Implementierung ersetzt werden kann.
MaxClients Maximale Anzahl gleichzeitig angemeldeter FTP-Clients.
FtpServerHost Cloud Service Name, in dem die FTP-Bridge installiert wird.
[…].Diagnostics.ConnectionString Ersetzen Sie auch hier die Platzhalter wie für den Parameter StorageAccount.

Deloyment der FTP-Bridge-Lösung in einen Cloud Service Container

Legen Sie nun einen Cloud Service an. Rufen Sie hierzu im Management Portal den Menüpunkt Cloud Service und dann das Icon New auf.

image

Wechseln Sie nach dem Anlegen in das Cloud-Service-Dashboard und wählen Sie dort den Menüpunkt Upload a new Production Deployment. Es öffnet sich der Deploymet-Dialog, über den Sie die beiden Dateien des Deploymentpakets in den Cloud Service laden und dann starten können.

image

Bestätigen Sie Ihre Eingabe mit dem Klick über die Bestätigungsschaltfläche. Mit der Bestätigung werden die beiden Deploymentdateien nach Windows Azure geladen, eine neue virtuelle Maschine mit der Worker-Role-Konfiguration provisioniert und die FTP-Bridge installiert. Der Vorgang dauert ca. 5-8 Minuten.

Zugriff über einen FTP-Client

Sobald dass Management Portal den Abschluss des Deployments meldet, sind Installation und Setup der Windows Azure Ressourcen abgeschlossen. Jetzt kann das Ganze mit einem beliebigen FTP-Client getestet werden. Ich habe versuchsweise mal mit FileZilla getestet. Dort kann man sich unmittelbar mit den oben konfigurierten Benutzerdaten mit dem Cloud Service verbinden. Das Ergebnis siehe in folgender Abbildung:

image

Über diesen Weg lassen sich nun komfortabel Dateien zwischen einem lokalen Filesystem und Windows Azure Blob Storage austauschen. Selbstverständlich bleibt die Möglichkeit des direkten Zugriffs auf den Blob Storage via http(s) erhalten. Inhalte können also beispielsweise über den Storage Explorer ausgelesen werden.

Weitere Informationen

Leave a Comment
  • Please add 8 and 1 and type the answer here:
  • Post
  • Da das oben beschriebenen Deploymentpaket eine in Kürze nicht mehr von Window Azure unterstützte Betriebssystem-Version voraussetzt würde ein Upgrade dieses Artikels sehr interessant sein. Wir portiert man obiges Deploymentpaket für die Betriebssystemfamilie Windows Server 2012?

  • Hi,

    leider verwendet die oben beschriebene Lösung verschiedene Code-Pakete, die inzwischen veraltet sind bzw. durch neuere ersetzt wurden, die nicht ganz kompatibel zu Ftp2Azure sind. Mit ein wenig Programmieraufwand sollte sich das aber auf neuere Versionen portieren lassen.

    Zu der generellen Fragestellung "FTP Server auf Azure" ist allerdings zu sagen, dass die oben verwendete Lösung aus einer Zeit stammt, in der Azure noch nicht so mächtig war wie heute; die Lösung war eigentlich eher eine "Not-Lösung". Heute würde ich - bei der Anforderung, per FTP auf Azure zugreifen zu können - auf Azure Virtual Machines verweisen. Dort lässt sich recht problemlos ein FTP Server installieren bzw. im IIS die FTP-Funktionalität freischalten. Hierzu gibt es einige Blogs, die das Vorgehen beschreiben:

    fabriccontroller.net/.../passive-ftp-and-dynamic-ports-in-iis8-and-windows-azure-virtual-machines

    blogs.msdn.com/.../setting-up-a-passive-ftp-server-in-windows-azure-vm.aspx

    Ich selbst habe es noch nicht ausprobiert, werde es aber, wenn ich Zeit habe, mal tun und dann hier auf diesem Blog entsprechend dokumentieren.

    Viele Grüße,

    Holger

  • Wie zu beginn des Artikels erwähnt gibt es jetzt einen weiteren Artikel, der beschreibt, wie die Lösung aus diesem Artikel aktualisiert werden kann, so dass sie mit aktuellen Azure-Images läuft. Zum Artikel geht's hier: http://aka.ms/N8p48y

Page 1 of 1 (3 items)