Utilisation du Transfert haut débit Aspera
La fonction Transfert haut débit Aspera (Aspera High-Speed Transfer) surmonte les limitations des transferts FTP et HTTP traditionnels et améliore les performances de transfert de données dans la plupart des cas, notamment sur les réseaux avec des temps d'attente élevés et soumis à des pertes de paquets.
Cette fonction n'est actuellement pas prise en charge dans Object Storage pour Satellite. En savoir plus.
Au lieu de l'opération HTTP standard PUT
, le transfert haut débit Aspera télécharge l'objet à l'aide du protocole FASP. L'utilisation de cette fonction
pour les envois et réceptions par téléchargement offre les avantages suivants :
- Vitesses de transfert plus rapides
- Transfert d'envois par téléchargement d'objet volumineux de plus de 200 Mo dans la console et de 1 Go à l'aide d'un SDK ou d'une bibliothèque
- Envoi par téléchargement de dossiers complets contenant tout type de données, tels que des fichiers multimédia, des images de disque et d'autres données structurées ou non structurées
- Personnalisation des vitesses de transfert et des préférences par défaut
- Possibilité de visualiser, de mettre en pause, de reprendre ou d'annuler des transferts indépendamment les uns des autres
Le transfert à haut débit Aspera est disponible dans la console IBM Cloud et peut également être utilisé à l'aide d'un programme à l'aide du Aspera Transfer SDK.
La fonction Transfert haut débit Aspera est disponible dans certaines régions uniquement. Pour plus d'informations, voir Services intégrés.
Il n'est pas possible d'utiliser le transfert haut débit Aspera si un compartiment ciblé possède une règle Immutable Object Storage.
Utilisation de la console
Si vous ajoutez des objets en utilisant la console dans une région prise en charge, vous êtes invité à installer le client Aspera Connect. Ce plug-in de navigateur offre le transfert haut débit Aspera pour télécharger des fichiers et des dossiers.
Installation d'Aspera Connect
- Sélectionnez Installer Aspera Connect.
- Suivez les instructions d'installation correspondant à votre système d'exploitation et à votre navigateur.
- Reprenez le téléchargement de fichier ou de dossier.
Le plug-in Aspera Connect peut également être installé directement à partir du site Web d'Aspera. Pour obtenir de l'aide lors du traitement des incidents liés au plug-in Aspera Connect, voir la documentation.
Après l'installation du plug-in, vous avez la possibilité de définir le transfert haut débit Aspera comme valeur par défaut pour tous les téléchargements vers le compartiment cible qui utilisent le même navigateur. Sélectionnez Mémoriser mes préférences de navigateur. Des options sont également disponibles sur la page de configuration de compartiment sous Options de transfert. Ces options vous permettent de choisir la valeur Standard ou Haut débit comme transport par défaut pour les envois et réceptions par téléchargement.
En principe, la console Web d'IBM Cloud Object Storage n'est pas la méthode la plus courante pour utiliser Object Storage. L'option de transfert Standard limite la taille des objets à 200 Mo et le nom de fichier et la clé seront les mêmes. La prise en charge des objets plus volumineux et des performances améliorées (en fonction des facteurs de réseau) est fournie par la fonction Transfert haut débit Aspera.
Un serveur Aspera exécute un serveur SSH sur un port TCP configurable (33001 par défaut). Le pare-feu côté serveur doit autoriser ce port TCP à atteindre le serveur Aspera. Aucun serveur n'est à l'écoute sur les ports UDP. Lorsqu'un transfert est initié par un client Aspera, le client ouvre une session SSH sur le serveur SSH sur le port TCP désigné et négocie le port UDP sur lequel transitent les données. Par défaut, les clients et les serveurs Aspera sont configurés pour utiliser le port UDP 33001. Après l'étape d'ouverture de session, le client et le serveur envoient et reçoivent le trafic UDP sur le port négocié. Pour permettre le démarrage de la session UDP, le pare-feu côté serveur Aspera doit autoriser le port UDP 33001 pour accéder au serveur Aspera. Pour plus d'informations, voir Remarques relatives aux pare-feu.
Etat de transfert
Actif : lorsqu'un transfert est initié, l'état de transfert est Actif. Lorsqu'il est actif, vous pouvez mettre en pause, reprendre ou annuler le transfert.
Terminé : à la fin de votre transfert, des informations sur ce dernier et sur tous les transferts réalisés dans cette session s'affichent dans l'onglet Terminé. Vous pouvez effacer ces informations. Seules les informations relatives aux transferts terminés dans la session en cours sont visibles.
Préférences : vous pouvez définir la valeur par défaut Haut débit pour les envois et réceptions par téléchargement.
Les réceptions par téléchargement qui utilisent la fonction Transfert haut débit Aspera entraînent des frais de sortie supplémentaires. Pour plus d'informations, voir la page de tarification.
Préférences avancées : vous pouvez définir une bande passante pour les envois et réceptions par téléchargement.
Utilisation du Aspera Transfer SDK
- Téléchargez le logiciel Aspera Transfer SDK à partir d' IBM API Hub. Le SDK est une collection de fichiers binaires (utilitaires de ligne de commande et démon pour écouter les demandes de transfert), de fichiers de configuration et de connecteurs spécifiques à la langue.
- Installez les dépendances grpc à partir du gestionnaire de package approprié (pip, maven, gem, etc.).
- Lancez le démon et importez les fichiers de connecteur de langage de programmation appropriés dans votre projet.
- Instanciez un client Aspera en lui transmettant le port local utilisé par le démon.
- Créez un
transfer_spec
contenant toutes les informations nécessaires au transfert:icos
Informations :- Clé d'API
- ID de l'instance de service
- Noeud final cible
- Nom du compartiment
- Sens de transfert
- Hôte distant (vous pouvez le trouver en envoyant une demande GET à un compartiment avec un paramètre de requête
?faspConnectionInfo
) - Actifs pour le transfert (essentiellement un ensemble de chemins de fichier)
- Transmettez la spécification de transfert et les informations de configuration à une demande de transfert.
Voici un exemple d'utilisation de 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()