IBM Cloud Docs
Usando o Aspera High-Speed Transfer

Usando o Aspera High-Speed Transfer

O Aspera high-speed transfer supera as limitações das transferências tradicionais de FTP e HTTP para melhorar o desempenho da transferência de dados sob a maioria das condições, especialmente em redes com alta latência e perda de pacote.

Esse recurso não é suportado atualmente no Object Storage para Satellite. Saiba mais.

Em vez da operação HTTP PUT padrão, o Aspera faz upload do objeto usando o protocolo FASP. O uso do Aspera high-speed transfer para uploads e downloads oferece os benefícios a seguir:

  • Velocidades de transferência mais rápida
  • Transferência de grandes uploads de objetos com mais de 200 MB no console e 1 GB usando um SDK ou uma biblioteca
  • Upload de pastas inteiras de qualquer tipo de dados, como arquivos de multimídia, imagens de disco e quaisquer outros dados estruturados ou não estruturados
  • Customizar velocidades de transferência e preferências padrão
  • As transferências podem ser visualizadas, pausadas, continuadas ou canceladas independentemente

A transferência de alta velocidade do Aspera está disponível no IBM Cloud console e também pode ser usada programaticamente usando o Aspera Transfer SDK.

O Aspera high-speed transfer está disponível somente em certas regiões. Consulte Serviços integrados para obter mais detalhes.

Não será possível usar a transferência de alta velocidade do Aspera se um depósito de destino tiver uma política Immutable Object Storage..

Usando o console

Se você incluir objetos usando o console em uma região suportada, será solicitado que você forneça uma opção para instalar o cliente Aspera Connect. Esse plug-in do navegador fornece o Aspera high-speed transfer para fazer upload de arquivos ou pastas.

Instalar o Aspera Connect

  1. Selecione Instalar o cliente Aspera Connect.
  2. Siga as instruções de instalação de seu sistema operacional e navegador.
  3. Continue o upload de arquivo ou pasta.

O plug-in Aspera Connect também pode ser instalado no website do Aspera diretamente. Para obter problemas de resolução de problemas com o plug-in Aspera Connect, consulte a documentação.

Após a instalação do plug-in, você tem a opção de configurar o Aspera high-speed transfer como o padrão para quaisquer uploads para o depósito de destino que usem o mesmo navegador. Selecione Lembrar minhas preferências do navegador. As opções também estão disponíveis na página de configuração do depósito em Opções de transferência. Essas opções permitem que você escolha entre Padrão e Alta velocidade como o transporte padrão para uploads e downloads.

Geralmente, usar o console baseado na web do IBM Cloud Object Storage não é a maneira mais comum de usar o Object Storage. A opção de transferência Padrão limita o tamanho de objetos a 200 MB e o nome do arquivo e a chave serão os mesmos. O suporte para tamanhos de objetos maiores e desempenho melhorado (dependendo de fatores de rede) é fornecido pelo Aspera high-speed transfer.

Um servidor Aspera executa um servidor SSH em uma porta TCP configurável (33001 por padrão). O firewall no lado do servidor deve permitir que essa porta TCP chegue ao servidor Aspera. Nenhum servidor está atendendo em portas UDP Quando uma transferência é iniciada por um cliente Aspera, o cliente abre uma sessão SSH para o servidor SSH na porta TCP designada e negocia a porta UDP sobre a qual os dados viajarão. Por padrão, os clientes e servidores Aspera são configurados para usar a porta UDP 33001. Após a etapa de inicialização da sessão, o cliente e o servidor enviarão e receberão tráfego UDP na porta negociada. Para permitir que a sessão UDP seja iniciada, o firewall no lado do servidor Aspera deve permitir que a porta UDP 33001 alcance o servidor Aspera. Para obter mais informações, consulte Considerações de firewall.

Status da transferência

Ativo: depois de iniciar uma transferência, o status da transferência é exibido como ativo. Enquanto a transferência está ativa, é possível pausar, continuar ou cancelar uma transferência ativa.

Concluído: na conclusão de sua transferência, informações sobre isso e todas as transferências nessa sessão são exibidas na guia concluída. É possível limpar essas informações. Você só verá informações sobre as transferências concluídas na sessão atual.

Preferências: é possível configurar o padrão para uploads e downloads para Alta velocidade.

Os downloads que usam o Aspera high-speed transfer incorrem em encargos de egresso. Para obter mais informações, consulte a página de precificação

Preferências avançadas: é possível configurar a largura da banda para uploads e downloads.

Usando o Aspera Transfer SDK

  1. Faça o download do Aspera Transfer SDK a partir do IBM API Hub. O SDK é uma coleção de binários (utilitários de linha de comando e um daemon para atender a solicitações de transferência), arquivos de configuração e conectores específicos do idioma...
  2. Instale as dependências grpc do gerenciador de pacotes apropriado (pip, maven, gem, etc).
  3. Ative o daemon e importe os arquivos do conector de linguagem de programação relevantes para o seu projeto
  4. Instancie um cliente Aspera transmitindo a ele a porta local usada pelo daemon.
  5. Crie um transfer_spec contendo todas as informações necessárias para a transferência:
    1. icos informações:
      1. Chave de API
      2. ID da instância de serviço
      3. Terminal de destino
      4. Nome do depósito
      5. Direção de transferência.
      6. Host remoto (você encontra isso enviando uma solicitação GET para um depósito com um parâmetro de consulta ?faspConnectionInfo )
      7. Ativos para transferência (basicamente um conjunto de caminhos de arquivo)
  6. Passe a especificação de transferência e informações de configuração para uma solicitação de transferência.

A seguir há um exemplo usando 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()