IBM Cloud Docs
Utilización de la transferencia de alta velocidad de Aspera

Utilización de la transferencia de alta velocidad de Aspera

La transferencia de alta velocidad Aspera omite las limitaciones de las transferencias FTP y HTTP tradicionales a fin de mejorar el rendimiento de la transferencia de datos bajo la mayoría de las condiciones, especialmente en redes con latencia alta y posibilidad de pérdida de paquetes.

Esta característica no está soportada actualmente en Object Storage para Satellite. Más información.

En lugar de la operación HTTP PUT estándar, la transferencia de alta velocidad de Aspera carga el objeto utilizando el protocolo FASP. El uso de las transferencia de alta velocidad de Aspera para cargas y descargas ofrece las siguiente ventajas:

  • Velocidades de transferencia más rápidas
  • Transferencia de cargas de objetos grandes de más de 200 MB en la consola y de 1 GB si se utiliza SDK o la biblioteca
  • Carga de carpetas enteras de cualquier tipo de datos, como archivos multimedia, imágenes de disco y otros datos estructurados o no estructurados
  • Personalización de velocidades de transferencias y de preferencias predeterminadas
  • Las transferencias se puede ver, poner en pausa, reanudar o cancelar de forma independiente

La transferencia de alta velocidad de Aspera está disponible en la consola de IBM Cloud y también se puede utilizar mediante programación utilizando el SDK deAspera Transfer SDK.

La transferencia de alta velocidad de Aspera solo está disponible en determinadas regiones. Consulte Servicios integrados para obtener más información.

No es posible utilizar la transferencia de alta velocidad de Aspera si un grupo de destino tiene una política Inmutable Object Storage.

Utilización de la consola

Si añade objetos mediante la consola en una región soportada, se le solicita una opción para instalar el cliente de Aspera Connect. Este plugin de navegador proporciona transferencia de alta velocidad de Aspera para cargar archivos o carpetas.

Instalación de Aspera Connect

  1. Seleccione instalar el cliente de Aspera Connect.
  2. Siga las instrucciones de instalación correspondientes a su sistema operativo y del navegador.
  3. Reanude la carga del archivo o de la carpeta.

El plugin Aspera Connect también se puede instalar directamente desde el sitio web de Aspera. Para obtener ayuda para solucionar problemas con el plugin de Aspera Connect, consulte la documentación.

Una vez instalado el plugin, tiene la opción de establecer la transferencia de alta velocidad de Aspera como valor predeterminado para cualquier carga en el grupo de destino que utiliza el mismo navegador. Seleccione Recordar mis preferencias de navegador. Las opciones también están disponibles en la página de configuración del grupo bajo Opciones de transferencia. Estas opciones le permiten elegir entre Estándar y Alta Velocidad como transporte predeterminado para cargas y descargas.

Generalmente, la utilización de la consola basada en web de IBM Cloud Object Storage no es la forma más común de utilizar Object Storage. La opción de transferencia estándar limita el tamaño de los objetos a 200 MB y el nombre de archivo y la clave serán los mismos. La transferencia de alta velocidad de Aspera proporciona soporte para tamaños de objeto mayores y un rendimiento mejorado (en función de los factores de red).

Un servidor Aspera ejecuta un servidor SSH en un puerto TCP configurable (33001 de forma predeterminada). El cortafuegos en el lado del servidor debe permitir que este puerto TCP llegue al servidor Aspera. Ningún servidor está a la escucha en puertos UDP. Cuando una transferencia se inicia mediante un cliente Aspera, el cliente abre una sesión SSH en el servidor SSH en el puerto TCP designado y negocia el puerto UDP a través del cual viajarán los datos. De forma predeterminada, los clientes y servidores de Aspera están configurados para utilizar el puerto UDP 33001. Después del paso de inicio de sesión, tanto el cliente como el servidor enviarán y recibirán tráfico UDP en el puerto negociado. Para permitir que se inicie la sesión de UDP, el cortafuegos en el lado del servidor de Aspera debe permitir que el puerto UDP 33001 llegue al servidor de Aspera. Para obtener más información, consulte Consideraciones sobre cortafuegos.

Estado de la transferencia

Activa: una vez que se inicia una transferencia, el estado de transferencia se muestra como activo. Mientras la transferencia está activa, puede poner en pausa, reanudar o cancelar una transferencia activa.

Completada: después de completar la transferencia, en el separador Completada se muestra información sobre esta y sobre todas las transferencias de esta sesión. Puede borrar esta información. Solo verá información sobre las transferencias completadas en la sesión actual.

Preferencias: puede establecer el valor predeterminado para cargas y descargas en Alta velocidad.

Las descargas que utilizan la transferencia de alta velocidad de Aspera generan cargos de salida. Para obtener más información, consulte la página de precios.

Preferencias avanzadas: puede definir el ancho de banda para las cargas y descargas.

Utilización del Aspera Transfer SDK

  1. Descargue el Aspera Transfer SDK desde IBM API Hub. El SDK es una colección de binarios (programas de utilidad de línea de mandatos y un daemon para escuchar solicitudes de transferencia), archivos de configuración y conectores específicos del idioma.
  2. Instale las dependencias grpc desde el gestor de paquetes adecuado (pip, maven, gem, etc.).
  3. Inicie el daemon e importe los archivos de conector de lenguaje de programación relevantes al proyecto.
  4. Cree una instancia de un cliente Aspera pasándole el puerto local utilizado por el daemon.
  5. Cree un transfer_spec que contenga toda la información necesaria para la transferencia:
    1. Información de icos :
      1. Clave de API
      2. ID de instancia de servicio
      3. Punto final de destino
      4. Nombre de grupo
      5. Dirección de transferencia
      6. Host remoto (lo encuentra enviando una solicitud GET a un grupo con un parámetro de consulta ?faspConnectionInfo )
      7. Activos para transferencia (básicamente un conjunto de vías de acceso de archivo)
  6. Pase la especificación de transferencia y la información de configuración a una solicitud de transferencia.

A continuación se muestra un ejemplo que utiliza 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()