In diesem Beitrag wollen wir am praktischen Beispiel zeigen, wie man Synesty an einen S3-Speicher andockt, um Dateibackups bei einem Schnittstellenprojekt / Integration abzulegen.
Wir fokussieren uns dabei auf S3-Speicherplatzlösungen, die explizit Datenspeicherung in Deutschland anbieten. Das ist im Kontext von Synesty aus Datenschutzgründen / DSGVO wichtig, weil viele Kunden personenbezogene Daten (sog. PII Data) verarbeiten, wie z.B. Bestellungen aus Onlineshops und Marktplätzen.
S3 wurde ursprünglich von Amazon AWS ins Leben gerufen und bietet mit der S3-API eine Programmierschnittstelle, mit der Anwendungen Daten in einem S3-Objektspeicher speichern und herunterladen können. Objektspeicher heißt es deshalb, weil zusätzlich zum eigentlichen Dateiinhalt auch noch ein eindeutiger Bezeichner (z.B. eine UUID) und individuelle Metadaten gespeichert werden können. Ein Unterschied von Objektspeichern im Gegensatz zu Dateispeichern (z.B. via FTP) ist, dass es keine hierarchischen Ordnerstrukturen gibt. Stattdessen ist es eine flache Struktur, die nur einen eindeutigen Identifier pro Objekt (Datei) braucht.
Wenn Sie automatisierte Prozesse mit Synesty bauen, dann werden oft Dateien mit anderen Systemen ausgetauscht. Damit das klappt, müssen Dateien irgendwo extern (d.h. außerhalb von Synesty) abgelegt werden, damit Synesty oder ein anderes System darauf zugreifen kann. Klassischerweise kommt dabei oft ein FTP-Server oder auch die sichere Variante SFTP oder FTPS zum Einsatz. Oder andere Kunden setzen auf Dienste wie Google Drive, Dropbox oder Microsoft OneDrive. S3 ist eine weitere Möglichkeit, große Datenmengen dateibasiert abzulegen.
S3 Speicherplatz eignet sich gut als zusätzlicher Backup-Speicherplatz, auf den Sie alle in Flows verarbeiteten Dateien kopieren, sodass Sie zu jeder Zeit eine Historie dieser Dateien haben. Einige Beispiele sind:
Mittlerweile gibt es einige weitere Hostinganbieter, die auch S3 Speicherplatz im Programm haben und eine S3-API-kompatible Schnittstelle anbieten.
Der Vorteil: Speicherlösungen, die mit der S3-API kompatibel sind, können auf die gleiche Weise angesprochen werden. Dadurch funktioniert auch das Synesty Add-On mit vielen anderen Anbietern, obwohl es ursprünglich für Amazon S3 entwickelt wurde.
In diesem Beitrag wollen wir am Beispiel des Kölner Anbieters gridscale.io zeigen, wie man mit Synesty Daten auf S3-Speicher abspeichern kann. Das Beispiel-Szenario ist ein Backup von PDF-Rechnungen auf S3-Speicher, die wir uns aus dem Dienst Getmyinvoices per Add-On herunterladen.
Das finale Ergebnis sieht so aus:
Dazu registrieren wir uns einen kostenlosen Account bei gridscale.io.
Den S3-Speicher finden wir dann unter Storage / Object Storage
Wir erstellen einen Bucket (das ist wie ein großer Ordner für unsere Dateien), den wir s3-demo nennen.
Danach erstellen wir einen Access-Key. Das sind die Zugangsdaten, die wir brauchen, um mit der API auf diesen Bucket zuzugreifen. Wir erhalten einen Access-Key und einen Secret-Key.
Zurück in Synesty Studio, erstellen wir einen Test-Flow. Dieser Test-Flow erzeugt eine einfache Testdatei (mit dem Step StringToFile) und lädt diese mit dem Step S3Upload zu S3 hoch. Dazu tragen wir unsere zuvor geholten Zugangsdaten ein, indem wir einen Account anlegen.
Zusätzlich geben wir dort den Endpoint an. Das ist der wichtige Teil: Damit bestimmen wir, zu welchem Dienst (API) wir uns eigentlich verbinden. Für die gridscale-Server in Frankfurt ist das https://gos3.io, was man hier nachlesen kann. Der Verbindungstest sagt, dass die Verbindung erfolgreich hergestellt werden konnte und dass wir Zugriff auf den s3-demo Bucket haben.
Damit ist unser Test-Flow fast fertig. Wir geben noch den Bucket an (s3-demo), in den wir unsere Testdatei hochladen wollen und drücken auf Flow ausführen.
Im S3-Buck bei gridscale sehen wir die hochgeladene Testdatei.
Auf zwei Optionen des S3Upload Steps soll hier auch noch eingegangen werden:
Vor allem die Option presignedUrlValidityInMinutes ist interessant. Damit kann man z.B. jemanden die Links zu den hochgeladenen Dateien schicken, aber dieser Link verfällt nach 5 Minuten. Das ist aus Sicherheitsgründen sehr wertvoll, da man sensible Daten leicht mit anderen teilen kann, ohne aber aufwändig Zugangsdaten einzurichten. Der Link ist ermöglicht den Zugriff nur für ein kurzes Zeitfenster. Danach ist kein Zugriff mehr möglich.
Da wir nun die Übertragung erfolgreich getestet haben, können wir den Test-Flow so umbauen, dass wir unsere PDF-Rechnungen von Getmyinvoices auf dem S3-Speicher sichern können.
Die Beispiele aus dem Beitrag können als Vorlage installiert, ausprobiert und für eigene Zwecke angepasst werden.
Das ist eine kleine Auswahl, ohne Anspruch auf Vollständigkeit. Es gibt noch weitere Hosting Anbieter die auch S3 Object Storage im Angebot haben, oder ermöglichen, dass man über z.B. Nextcloud oder Owncloud, seinen eigenen Object Storage aufbaut.