Automatisierte Übertragung und Archivierung von Mediendateien mit MASV und Backblaze

von Ankit Verma | 14.12.2021

Wenn Sie regelmäßig mit Videos arbeiten, sind Sie zweifellos daran gewöhnt, große Mediendateien an Kunden/Teammitglieder zu senden und Ihre Mediendateien anschließend auf einer Art Speichereinheit zu sichern. Wenn Sie Ihre Mediendateien übertragen und archivieren, ist das wahrscheinlich ein zweistufiger Prozess. Heute möchte ich Ihnen am Beispiel einer Kombination aus MASV Portals und Backblaze zeigen, wie Sie Mediendateien automatisch in einem einzigen Prozess übertragen und archivieren können.

Der Hauptvorteil der Kombination dieser beiden Aktionen liegt neben der Geschwindigkeit/Effizienz darin, dass keine Datei während des Sicherungsvorgangs vergessen wird. Jeder hat schon einmal einen Ordner geöffnet und darin Dateien mit Namen wie file01.mp4, file02.mp, file01geändert.mp4. Ein schneller Sicherungsprozess, der unglaublich schnell kompliziert wird. Mit einem automatischen und einfachen Sicherungsprozess kann jedoch jede Datei nach Uploaddatum und Dateigröße getrennt werden. Dies kann und wird Ihnen Zeit und Mühe ersparen, herauszufinden, welche Version einer Datei die wichtige ist. 

Die Integration von MASV mit Cloud-Anbietern wie Backblaze kann heute problemlos über unsere Webanwendung mit wenigen Klicks. In diesem Beitrag gehen wir jedoch noch einen Schritt weiter und zeigen Ihnen, wie Sie diese Schritte mithilfe von MASVs Cloud Connect API. So können Sie den Prozess über eine einzelne Cloud-Verbindung hinaus automatisieren und ein Automatisierungskraftwerk schaffen, das mehrere Clouds miteinander verbindet. MASV-Portale zu mehreren Cloud-Anbietern/Speicher-Buckets. Wir werden Python3 als Skriptsprache verwenden, um zu demonstrieren, wie einfach dies erreicht werden kann.

Übertragen und Archivieren von Medien mit MASV und Backblaze

Übertragung und Archivierung von Mediendateien mit masv und backblaze

Wie bereits erwähnt, werden wir heute MASV und Backblaze verwenden. Unser Ziel ist es, ein einfaches Python3-Skript zu erstellen, das beide Dienste miteinander verbindet und zeigt, wie einfach die Cloud Connect-Technologie von MASV funktioniert. Diese beiden Technologien bieten eine Reihe von Funktionen. Hier sind einige der Highlights, die wir heute nutzen.

MASV:

  • Extrem schnelle Übertragung großer Dateien.
  • Automatische Übertragung von ganzen Verzeichnissen.
  • Cloud Connect: Integration mit externen Cloud-Buckets, um die Dateien automatisch dorthin zu verschieben, wo Sie sie benötigen.

BackBlaze:

  • Günstige unbegrenzte Langzeitspeicherung.
  • Unglaublich einfache Cloud-Sicherung.
  • Workflow-freundlich.
  • Unterstützt die Zwei-Faktor-Authentifizierung.

Wir verwenden Backblaze als unseren Cloud Connect-Anbieter für die Integration mit MASV. Alle diese Schritte können verallgemeinert werden, um mit jedem Anbieter zu arbeiten, wie in unserem Dokumentation.

Sie haben noch kein MASV-Konto?

Sie erhalten 100 GB, wenn Sie sich anmelden.

Workflow-Annahmen

Für die Zukunft gehen wir von den folgenden Annahmen aus:

  • Ein Code-Editor wie z.B. Visual-Studio-Code.
  • Python3 installiert und die Fähigkeit, Skripte auszuführen.
  • Ein MASV-Konto.
  • Backblaze B2-Konto mit API-Schlüssel.

Bevor wir beginnen, möchten wir sicherstellen, dass Sie einen Backblaze B2-Schlüssel haben. Bitte folgen Sie der Anleitung unter https://www.backblaze.com/b2/docs/application_keys.html

Anforderungen einrichten

Beginnen Sie mit der Erstellung einer Datei namens backblaze.py Dies ist das Skript, in dem der gesamte Code geschrieben wird.

Dieses Skript benötigt die Fähigkeit, http-Anfragen zu senden, und dafür werden wir die Anfragen Bibliothek.

Installieren Sie in Ihrem Terminal die Anfragen Paket.

$ pip3 Installationsanfragen

Authentifizierung mit MASV

Für die Authentifizierung verwenden wir unseren Benutzernamen/Passwort. Dies kann auch mit einem Benutzer-Token geschehen, aber der Einfachheit halber verwenden wir heute Benutzername/Passwort. Wir empfehlen dringend die Verwendung eines API-Schlüssels. Ein API-Schlüssel kann leicht geändert werden, falls der Schlüssel entwendet wird. Mit der Benutzerauthentifizierung können Sie auf das gesamte Dashboard Ihres Kontos zugreifen.


//python
Anfragen importieren

api_uri = 'https://api.massive.app/v1'
api_auth_route = '/auth'

auth_request = {
    "email": "[email protected]",
    "password": "yourpassword"
}

r = requests.post(
    api_uri + api_auth_route,
    json=auth_request
)
auth_response = r.json()
auth_token = auth_response['token']
team_id = auth_response['teams'][0]['id']

print("Authentifizierungs-Token geholt")

Hier gibt es ein paar Grundregeln, um uns in Gang zu bringen. In Zeile #1 importieren wir die Anfragen Bibliothek. In Zeile #3 müssen wir die api uri definieren. Dies ist wichtig, da es uns erlaubt, die Standardroute im Falle zukünftiger Änderungen der Domäne leicht zu ändern. Danach folgt die genaue Route für die Authentifizierung.

Wir geben unseren Benutzernamen und unser Passwort für unsere Zulassungsanfrage ein. Dies ist der Benutzername und das Passwort, die Sie für den Zugriff auf das MASV-Dashboard verwenden. Schließlich gehen wir zur eigentlichen Anfrage über. Mit String-Verkettung kombinieren wir api_uri und api_auth_route, um die vollständige URL zu erhalten https://api.massive.app/v1/auth und befestigen Sie unsere auth_request Variable als json.

Da wir uns heute gut fühlen, gehen wir einfach davon aus, dass die Anfrage erfolgreich war, und fangen an, Variablen abzufragen (einen Überblick über alle zurückgegebenen Variablen finden Sie unter unsere Dokumentation.)

Die Variablen, die wir benötigen, sind:

  • auth_token: wird zur Authentifizierung unserer Anfragen verwendet
  • team_id: das Team, dem wir unsere Anfragen und die Cloud-Verbindung zuordnen

Senden einer authentifizierten Anfrage

Großartig! Jetzt haben wir unser Benutzer-Token, aber wie verwenden wir es tatsächlich? Im Falle der MASV-Api werden wir unser Token an unsere Anfrage-Header anhängen. Ein einfaches Stück json wird uns den Einstieg erleichtern, damit wir es im gesamten Skript verwenden können

//python
team_id = auth_response['teams'][0]['id']
...

request_headers = {
    "Content-Type": "application/json",
    "X-User-Token": auth_token,
}

Einrichten von Automatisierungen mit MASV-Portalen

Ein kleiner Umweg, bevor wir mit Backblaze beginnen. Unser Ziel hier ist es automatisch Übertragung und Archivierung von Mediendateien an Backblaze. Wir können dies mit der Option Portal Funktion in MASV. Sie können sich ein Portal als einen Eimer vorstellen, in dem alle Ihre Dateien in MASV gespeichert werden.

Ein Ausschnitt kann mit der grafischen Benutzeroberfläche oder mit einem schnellen Skript erstellt werden. In diesem Fall werden wir ein schnelles Skript verwenden:

//python
    "X-User-Token": auth_token,
}
...

# Portal-ID abrufen
api_portals_route = '/teams/{}/portals'.format(team_id)

# Diese Anfrage schlägt fehl, wenn die Subdomain
# nicht geändert wird. Dekommentieren Sie die Subdomain-Zeile
# und ersetzen Sie `masvbackblaze` durch Ihre eigene
#, damit die Anfrage erfolgreich ist.
portal_request = {
    "name": "masvtobackblaze",
    "message": "Daten an Backblaze senden",
    "subdomain": "masvbackblaze",
    "recipients": [
        "[email protected]"
    ],
    "access_code": "Ihr_Zugangscode",
    "has_access_code": Wahr,
    "download_password": "ihr_download_passwort",
    "has_download_password": True",
}

r = requests.post(
    api_uri + api_portals_route,
    headers=request_headers,
    json=portal_anforderung
)

# Wir erstellen etwas
#, also müssen wir prüfen, ob es
# tatsächlich funktioniert
if r.status_code != 201:
    print(r.status_code)
    print(r.json()["Nachricht"])
    exit()

portal = r.json()
portal_id = portal["id"]
print("Erstellt Portal: {}".format(portal_id))

Hier gibt es eine Menge auszupacken. Wir beginnen mit dem Erhalt unserer api_portals_route diese Route interagiert mit allen Portalanfragen, die wir eventuell stellen müssen. Python enthält das schöne .format() Funktion, die es uns ermöglicht, die team_id die wir zuvor in die Uri geholt haben.

Für die eigentliche Antwort muss eine Art "Boiler Plate" erstellt werden. Wir setzen einige vernünftige Standardwerte fest. Die Subdomain ist ein eindeutiges Feld und muss für jede Person eindeutig sein. 

Unsere Anfrage verwendet jetzt auch unser Authentifizierungs-Token mit der Zeile headers=request_headers Jede Anfragefunktion, die eine Authentifizierung erfordert, wird von nun an diese Header enthalten.

Wir wollen die Erstellung überprüfen, also suchen wir nach dem 422 Fehler, mit dem unsere Api reagieren wird. Wenn sie bereits existiert, wird der Fehlercode ausgegeben und die Anwendung beendet.

Anmerkung: Vollständige Informationen über die Erstellung des Portals Besuchen Sie unsere Dokumentation.

Verbinden von Backblaze

Jetzt können wir eine Backblaze B2-Verbindung erstellen. Zu diesem Zweck erstellen wir die eigentliche Cloud-Verbindung und verbinden sie mit dem Portal, das wir im vorherigen Schritt erstellt haben. Dadurch wird die Übertragung und Archivierung der in MASV hochgeladenen Videodateien an Backblaze automatisiert.

//python
portal_id = r.json()["id"]
...

api_cloudconnect_route = '/teams/{}/cloud_connections'.format(team_id)
backblaze_connect_request = {
    "name": "backblazetomasv",
    "provider": "backblazeb2",
    "authorization": {
        "client_id": "0005bbxxxxxxxxxxxx",
        "client_secret": "K000xxxxxxxxxxx",
        "destination": "team-bucket",
    }
}

r=requests.post(
    api_uri + api_cloudconnect_route,
    headers=request_headers,
    json=backblaze_connect_request
)

print("Cloud-Verbindung erstellt {}".format(r.json()['id']))

# Wir erstellen gerade etwas
#, also müssen wir auswerten, ob es
# tatsächlich funktioniert
if r.status_code == 422:
    print(r.json()["message"])
    exit()

cloudconnect_id = r.json()['id']

Vieles an diesem Code sollte Ihnen bekannt vorkommen. Wir beginnen mit der Erstellung des cloudconnect Route auf unserer API. Gefolgt von einigen Parametern für unsere Backblaze-Verbindung. Die Name Feld sollte so geändert werden, dass es der in Ihrem Unternehmen verwendeten Namenskonvention entspricht.

Der Authentifizierungsblock ist erforderlich und wird mit den Anmeldedaten ausgefüllt, die unter Backblaze API-Schlüssel.

//python
# An das Portal anhängen

api_cloudconnect_attach_route = "/portals/{}".format(portal_id)

api_cloudconnect_request = portal_request
api_cloudconnect_request['active'] = Wahr
api_cloudconnect_request['configure_cloud_connections'] = True
api_cloudconnect_request['cloud_connections'] = [{
    "id": cloudconnect_id,
    "active": True,
    "target_action": "transfer"
}]

r=requests.put(
    api_uri + api_cloudconnect_attach_route,
    headers=request_headers,
    json=api_cloudconnect_request
)

print("Portalverbindung erstellt")

Führen Sie den Code mit einem Final aus:

  $ python3 backblaze.py

Es wird folgendes ausgegeben:

  Authentifizierungs-Token geholt
  Portal erstellt: IHRE_PORTAL_ID_HIER
  Cloud-Verbindung erstellt YOUR_CLOUD_CONNECTION_ID_HERE
  Erstellte Portalverbindung

Diese Ausgabe bestätigt, dass Ihr Skript erfolgreich ausgeführt wurde und Sie nun ein Portal erstellt haben, das mit einem Backblaze B2 Bucket verbunden ist. 

Um zu überprüfen, ob das Portal verbunden ist, können wir zum Dashboard Cloud Connect navigieren. Auf der Seite "Cloud-Verbindung" können Sie sehen, dass das Skript eine Verbindung mit dem Namen backblazetomasv. Mit einer grünen ok Status bedeutet, dass alles in Ordnung ist.

Der nächste Schritt auf Ihrer Liste ist die physische Übertragung und Archivierung dieser Mediendateien. Ein kurzes Ziehen und Ablegen auf MASV und Sie können sich für die Nacht verabschieden, in dem Wissen, dass die Daten sicher versendet und gespeichert werden.

Ihr Manager (der Empfänger, den Sie oben festgelegt haben) erhält eine E-Mail, wenn er die Datei herunterladen kann. Backblaze wird Ihre Datei(en) in einem seiner Buckets bereithalten.

backblaze Eimer Details

Möchten Sie herausfinden, wie Sie Dateien übertragen können, indem Sie sie einfach in einen Ordner auf Ihrem Desktop verschieben? Lesen Sie unsere laufende Blog-Serie über die Bereitstellung von TransferAgent in Docker. Wenn Sie mehr darüber erfahren möchten, was Sie mit unserer API tun können, besuchen Sie unsere Entwicklungsdokumente hier.

Sind Sie bereit, MASV auszuprobieren?

Melden Sie sich an und erhalten Sie Überweisungen im Wert von 100 GB von uns.