IBM Cloud Docs
Aspera-Hochgeschwindigkeitsübertragung verwenden

Aspera-Hochgeschwindigkeitsübertragung verwenden

Die Verwendung der Aspera-Hochgeschwindigkeitsübertragung beseitigt die Einschränkungen herkömmlicher FTP- und HTTP-Übertragungen und führt in den meisten Fällen zu einer Verbesserung der Leistung bei der Datenübertragung. Dies gilt insbesondere für Netze, bei denen es zu langen Latenzzeiten und zu Paketverlusten kommt.

Dieses Feature wird zurzeit in Object Storage nicht unterstützt für Satellite. Weitere Informationen.

Anstelle der HTTP-Standardoperation PUT lädt die Aspera-Hochgeschwindigkeitsübertragung das Objekt mithilfe des FASP-Protokollshoch. Die Verwendung der Aspera-Hochgeschwindigkeitsübertragung für Uploads und Downloads bietet die folgenden Vorteile:

  • Schnellere Übertragungsgeschwindigkeiten
  • Übertragung großer Objekte bei Uploads mit mehr als 200 MB in der Konsole und Übertragung von Objekten mit 1 GB über ein SDK oder eine Bibliothek
  • Upload kompletter Ordner mit beliebigem Datentyp einschließlich Multimediadateien, Plattenimages und anderer strukturierter oder unstrukturierter Daten
  • Anpassung der Übertragungsgeschwindigkeiten und Standardbenutzervorgaben
  • Übertragungen können unabhängig voneinander angezeigt, angehalten, fortgesetzt oder abgebrochen werden

Aspera-Hochgeschwindigkeitsübertragung ist in der IBM Cloud -Konsole verfügbar und kann auch über das Aspera Transfer SDKprogrammgesteuert verwendet werden.

Die Aspera-Hochgeschwindigkeitsübertragung steht nur in bestimmten Regionen zur Verfügung. Weitere Einzelheiten zu diesem Thema finden Sie im Abschnitt Integrierte Services.

Es ist nicht möglich, die Aspera-Hochgeschwindigkeitsübertragung zu verwenden, wenn ein Zielbucket über eine Richtlinie Immutable Object Storage verfügt.

Verwendung der Konsole

Wenn Sie Objekte über die Konsole in einer unterstützten Region hinzufügen, dann werden Sie über eine entsprechende Option aufgefordert, den Aspera Connect-Client zu installieren. Dieses Browser-Plug-in stellt die Funktion für die Aspera-Hochgeschwindigkeitsübertragung zum Hochladen von Dateien oder Ordnern bereit.

Aspera Connect installieren

  1. Wählen Sie den Client Aspera Connect installieren aus.
  2. Befolgen Sie abhängig vom verwendeten Betriebssystem und Browser die jeweils geltenden Installationsanweisungen.
  3. Setzen Sie den Datei- oder Ordnerupload fort.

Das Aspera Connect-Plug-in kann auch direkt über die Aspera-Website installiert werden. Hilfe zur Fehlerbehebung bei Problemen mit dem Aspera Connect-Plug-in finden Sie in der Dokumentation.

Sobald das Plug-in installiert ist, haben Sie die Option, die Aspera-Hochgeschwindigkeitsübertragung als Standardwert für alle Uploads in das Zielbucket festzulegen, die denselben Browser verwenden. Wählen Sie Meine Browservorgaben speichern aus. Die möglichen Optionen sind auch auf der Bucketkonfigurationsseite unter den Übertragungsoptionen verfügbar. Mit diesen Optionen können Sie zwischen der Standard- und der Hochgeschwindigkeitsübertragung als Standardtransport für Uploads und Downloads wählen.

Normalerweise stellt die webbasierte Konsole von IBM Cloud Object Storage nicht die am häufigsten genutzte Methode zur Verwendung von Object Storage dar. Die Standardübertragungsoption begrenzt die Größe der Objekte auf 200 MB, wobei der Dateiname und der Schlüssel identisch sind. Die Unterstützung für größere Objekte und die (abhängig von bestimmten Netzfaktoren) verbesserte Leistung wird durch die Aspera-Hochgeschwindigkeitsübertragung bereitgestellt.

Ein Aspera-Server führt einen SSH-Server an einem konfigurierbaren TCP-Port (standardmäßig 33001) aus. Die Firewall auf der Serverseite muss zulassen, dass dieser eine TCP-Port den Aspera-Server erreicht. An UDP-Ports sind keine Server empfangsbereit. Wenn eine Übertragung von einem Aspera-Client eingeleitet wird, öffnet der Client eine SSH-Sitzung mit dem SSH-Server am angegebenen TCP-Port und verhandelt den UDP-Port, über den die Daten übertragen werden. Aspera-Clients und -Server sind standardmäßig für die Verwendung des UDP-Ports 33001 konfiguriert. Nach dem Sitzungsinitialisierungsschritt senden und empfangen sowohl der Client als auch der Server UDP-Datenverkehr über den vereinbarten Port. Damit die UDP-Sitzung gestartet werden kann, muss die Firewall auf der Aspera-Serverseite zulassen, dass Port UDP 33001 den Aspera-Server erreicht. Weitere Informationen finden Sie unter Hinweise zur Firewall.

Übertragungsstatus

Aktiv: Nachdem Sie eine Übertragung gestartet haben, wird als Übertragungsstatus 'Aktiv' angezeigt. Während die Übertragung aktiv ist, können Sie eine aktive Übertragung anhalten, fortsetzen oder abbrechen.

Abgeschlossen: Nach Abschluss Ihrer Übertragung werden auf der Registerkarte 'Abgeschlossen' Informationen zur aktuellen Übertragung und zu allen weiteren Übertragungen in dieser Sitzung angezeigt. Diese Informationen können gelöscht werden. Es werden ausschließlich Informationen zu Übertragungen angezeigt, die in der aktuellen Sitzung abgeschlossen wurden.

Vorgaben: Sie können den Standardwert für Uploads und Downloads auf Hochgeschwindigkeit festlegen.

Für Downloads mit der Aspera-Hochgeschwindigkeitsübertragung fallen egress-Gebühren an. Weitere Informationen hierzu finden Sie auf der Seite für die Preisstruktur.

Erweiterte Vorgaben: Sie können für Uploads und Downloads die Bandbreite festlegen.

Aspera Transfer SDK verwenden

  1. Laden Sie das Aspera Transfer SDK von IBM API Hub herunter. Das SDK ist eine Sammlung von Binärdateien (Befehlszeilendienstprogramme und ein Dämon zum Überwachen von Übertragungsanforderungen), Konfigurationsdateien und sprachspezifischen Connectors.
  2. Installieren Sie die grpc-Abhängigkeiten vom entsprechenden Paketmanager (pip, maven, gem usw.).
  3. Starten Sie den Dämon und importieren Sie die relevanten Dateien des Programmiersprachenconnectors in Ihr Projekt.
  4. Instanziieren Sie einen Aspera-Client, indem Sie den lokalen Port übergeben, der vom Dämon verwendet wird.
  5. Erstellen Sie eine transfer_spec mit allen für die Übertragung erforderlichen Informationen:
    1. icos INFORMATION:
      1. API-Schlüssel
      2. Die Serviceinstanz-ID
      3. Zielendpunkt
      4. Gruppierungsname
      5. Übertragungsrichtung
      6. Ferner Host (Sie finden dies durch Senden einer GET-Anforderung an ein Bucket mit einem Abfrageparameter ?faspConnectionInfo )
      7. Assets für Übertragung (im Grunde eine Gruppe von Dateipfaden)
  6. Übergeben Sie die Transferspezifikation und die Konfigurationsdaten an eine Transferanforderung.

Das folgende Beispiel zeigt die Verwendung von Python:

import random
import string

import grpc
import json
import os.path

from urllib3.connectionpool import xrange

import transfer_pb2 as transfer_manager
import transfer_pb2_grpc as transfer_manager_grpc


def run():
    # create a connection to the transfer manager daemon
    client = transfer_manager_grpc.TransferServiceStub(
        grpc.insecure_channel('localhost:55002'))

    # create file
    file_path = generate_source_file()

    # create transfer spec
    transfer_spec = {
        "session_initiation": {
            "icos": {
                "api_key": os.environ.get('IBMCLOUD_API_KEY'),
                "bucket": os.environ.get('IBMCLOUD_BUCKET'),
                "ibm_service_instance_id": os.environ.get('IBMCLOUD_COS_INSTANCE'),
                "ibm_service_endpoint": os.environ.get('IBMCLOUD_COS_ENDPOINT')
            }
        },
        "direction": "send",
        "remote_host": "https://ats-sl-dal.aspera.io:443",
        "title": "strategic",
        "assets": {
            "destination_root": "/aspera/file",
            "paths": [
                {
                    "source": file_path
                }
            ]
        }
    }
    transfer_spec = json.dumps(transfer_spec)

    # create a transfer request
    transfer_request = transfer_manager.TransferRequest(
        transferType=transfer_manager.FILE_REGULAR,
        config=transfer_manager.TransferConfig(),
        transferSpec=transfer_spec)

    # send start transfer request to transfer manager daemon
    transfer_response = client.StartTransfer(transfer_request)
    transfer_id = transfer_response.transferId
    print("transfer started with id {0}".format(transfer_id))

    # monitor transfer status
    for transfer_info in client.MonitorTransfers(
            transfer_manager.RegistrationRequest(
                filters=[transfer_manager.RegistrationFilter(
                    transferId=[transfer_id]
                )])):
        print("transfer info {0}".format(transfer_info))

        # check transfer status in response, and exit if it's done
        status = transfer_info.status
        if status == transfer_manager.FAILED or status == transfer_manager.COMPLETED:
            print("finished {0}".format(status))
            break


def generate_source_file(name='file'):
    with open(name, 'w') as file:
        # file.write('Hello World!')
        file.write(''.join(random.choice(string.ascii_lowercase) for i in xrange(10 ** 10)))
    return os.path.abspath(name)


if __name__ == '__main__':
    run()