Código de amostra usando APIs do IBM Aspera para vários produtos e SDKs do IBM Aspera:
Várias linguagens de programação são propostas.
Documentação da API do IBM Aspera (selecione 24 itens por página na parte inferior).
A documentação do Aspera Transfer SDK contém exemplos de código.
Vídeo sobre o SDK de transferência
O site github do IBM Aspera Connect SDK contém exemplos sobre como usar o Aspera Connect SDK.
O IBM Aspera fornece dois tipos de APIs:
APIs do cliente:
SDKs incluem bibliotecas para serem usadas em aplicativos para transferência de arquivos
APIs de servidor:
APIs REST (com especificação OpenAPI) interagem com aplicações Aspera (Faspex, AoC, Node API, COS, etc...)
Dependendo do caso de uso, pode-se usar uma ou (frequentemente) várias dessas APIs.
Este repositório está estruturado assim:
web
: um exemplo que mostra o uso do SDKd da web: o SDK do Aspera Connect e o SDK do Aspera HTTP Gateway
app
: exemplos em vários idiomas usando o Aspera Transfer SDK e as APIs REST do Aspera Applications
Dentro de cada pasta de idioma, você encontrará:
README.md
: um README específico para o idiomaMakefile
: um makefile para executar as amostrassrc
: código fontesrc/utils
: classes auxiliaressrc/examples
: programas de exemploOs programas de exemplo usarão endereços de servidor e credenciais de um arquivo de configuração YAML. Depois que o arquivo de configuração for criado, programas de amostra poderão ser executados diretamente.
Sistemas do tipo Unix : Linux, macOS... um Makefile
é fornecido para executar as amostras.
Windows : Consulte Início rápido (Windows) abaixo. make
pode não estar disponível. Use o Makefile
como referência para executar os comandos manualmente.
Consulte Executando programas de amostra.
Na primeira execução do make
: o Transfer SDK será baixado automaticamente.
Para baixar o SDK, execute: make sdk
.
Consulte Arquivo de configuração: copie o arquivo config/config.tmpl
para private/config.yaml
e preencha os valores.
md private
copy configconfig.tmpl privateconfig.yaml
Defina o parâmetro misc.platform
como windows-x86_64
Edite os parâmetros necessários em private/config.yaml
, por exemplo, informações de conexão Faspex.
Nota: Sim, você também pode arrastar e soltar, clicar, copiar/colar e editar o arquivo com o Bloco de Notas, etc...
Prepare a pasta SDK
md tmp
Baixe o Aspera Transfer SDK (aqui) e extraia seu conteúdo para a pasta identificada por sdk_dir
em config/paths.yaml
: <main folder>/tmp/transfer_sdk
Nota: Certifique-se de que os arquivos identificados em
config/paths.yaml
estejam na pasta extraída conforme esperado. Por exemplo, o seguinte arquivo deve existir:<main folder>/tmp/transfer_sdk/bin/asperatransferd
Execute as amostras: consulte Executando programas de amostra
Crie um arquivo de configuração conforme especificado em Arquivo de configuração. Nem todos os valores são obrigatórios, apenas aqueles necessários para os exemplos que você deseja executar.
Por exemplo, para executar uma amostra individual, use make .tested/<sample name here>
:
$ cd app/python
$ make list
server aoc faspex faspex5 node shares node_v2
$ make .tested/faspex5
A execução de exemplos requer o download do daemon asperatransferd
do SDK de transferência e algumas ferramentas para compilar o arquivo proto do SDK de transferência. Consulte SDK de transferência.
Para detalhes, consulte a receita no Makefile
de cada idioma.
Um arquivo de configuração de modelo é fornecido: config/config.tmpl
.
Copie o arquivo config/config.tmpl
para private/config.yaml
e preencha com seus próprios endereços de servidor, credenciais e parâmetros.
cp config/config.tmpl private/config.yaml
vi private/config.yaml
Nota: Embora o formato possa parecer com o arquivo de configuração do
ascli
, um arquivo de configuração doascli
não é compatível com este. Você deve criar um novo.
Defina o parâmetro misc.platform
para a arquitetura utilizada:
osx-arm64
osx-x86_64
windows-x86_64
linux-x86_64
linux-s390
linux-arm64
linux-ppc64le
aix-ppc64
O parâmetro trsdk.url
pode ser definido como grpc://127.0.0.1:55002
(especifique a porta local que o SDK usará).
A seção httpgw
é usada apenas pelo exemplo web
.
Outras seções são usadas pelos vários exemplos. Por exemplo, se quiser testar apenas a transferência COS usando o SDK de transferência, você poderá preencher apenas a seção cos
e deixar as outras seções vazias.
Exemplo (com credenciais aleatórias):
misc :
platform : osx-x86_64
level : debug
transfer_regular : true
trsdk :
url : grpc://127.0.0.1:55002
level : trace
ascp_level : trace
web :
port : 9080
httpgw :
url : https://1.2.3.4/aspera/http-gwy
server :
user : aspera
pass : demoaspera
url : ssh://demo.asperasoft.com:33001
file_download : /aspera-test-dir-small/10MB.1
folder_upload : /Upload
node :
url : https://node.example.com:9092
verify : false
user : node_user
pass : _the_password_here_
folder_upload : /Upload
faspex :
url : https://faspex.example.com/aspera/faspex
user : faspex_user
pass : _the_password_here_
cos :
endpoint : https://s3.eu-de.cloud-object-storage.appdomain.cloud
bucket : my_bucket
key : _the_key_here_
crn : ' crn:v1:bluemix:public:cloud-object-storage:global:_the_crn_:: '
auth : https://iam.cloud.ibm.com/identity/token
coscreds :
bucket : mybucket
service_credential_file : ./service_creds.json
region : eu-de
aoc :
org : acme
user_email : [email protected]
private_key : /path/to/my_aoc_key
client_id : aspera.global-cli-client
client_secret : frpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb
workspace : Default
shared_inbox : TheSharedInbox
Observação: seções com URLs HTTPS possuem um parâmetro
verify
. Defina-o comofalse
para desabilitar a validação de certificado de servidor para ambientes de desenvolvimento.
Alguns caminhos relativos são definidos em config/paths.yaml
(mantenha esses valores intactos).
Os seguintes níveis de log podem ser definidos:
misc.level
: nível de log de código de amostra: error
warning
info
debug
trsdk.level
: nível de log asperatransferd: trace
info
debug
warning
error
fatal
panic
trsdk.ascp_level
: nível de log ascp: info
debug
trace
Alguns exemplos suportam a configuração da porta como 0
(zero) em trsdk.url
para usar uma porta aleatória.
O aplicativo de exemplo gera um arquivo asperatransferd.conf
fornecido para o daemon SDK de transferência. O nível de log é obtido do arquivo de configuração yaml geral.
O Transfer SDK é um serviço gRPC que permite transferir arquivos em um aplicativo. É uma API cliente que pode ser usada em vários idiomas.
O arquivo transfer.proto
é descrito na interface de chamada de procedimento remoto fornecida pelo daemon asperatransferd
.
+----------------+
+ transfer.proto +
+----------------+
|
[protoc]
|
v
+----------------------+ +------------+
+ generated stub code + + your code +
+----------------------+ +------------+
| [combine] |
+-----+----------------------+
|
v
+------------+ +---------------------+
| client app |-----[connect to]---->| Transfer SDK daemon |
+------------+ +---------------------+
| ^ | [executes]
+-------------[executes]----------------+ v
| +------+
[or other method, systemd, or manual]---[executes]------+ | ascp |
+------+
Os aplicativos cliente devem usar os arquivos de origem do cliente gerados a partir do arquivo transfer.proto
.
O código gerado (stub) é fornecido por conveniência no Transfer SDK para vários idiomas. Ele pode ser usado diretamente ou o desenvolvedor pode optar por gerá-los a partir do arquivo transfer.proto
. Para produção e compatibilidade futura, é recomendado gerar o código stub do arquivo transfer.proto
. Se você mesmo gerar o código stub, poderá se beneficiar do suporte para plataformas e versões mais recentes.
A maioria dos exemplos aqui gera o código stub do arquivo transfer.proto
.
Consulte o site do GRPC para obter instruções sobre como gerar o código.
Os programas de amostra usam classes auxiliares localizadas no pacote utils
:
Configuration
lê os parâmetros de configuração de config.yaml
para facilitar a execução de qualquer amostra.TransferClient
cria um arquivo de configuração e inicia o daemon Transfer SDK: asperatransferd
Rest
para chamadas de API simples em APIs Rest.O Transfer SDK requer os seguintes arquivos de tempo de execução:
asperatransferd
: executável que fornece o serviço gRPCascp
: executável que realmente transfere os arquivosascp4
: outra versão do ascpasync
: executável para operações assíncronaslibafwsfeed
: uma biblioteca para ascp
para web socketsaspera-license
: o arquivo de licença para ascp
(uso gratuito)Arquivos opcionais:
aspera.conf
: o arquivo de configuração do ascp
product-info.mf
: arquivo XML com informações sobre a versão do SDKaspera.conf
Este arquivo é opcional para ascp
quando usado no modo cliente.
O conteúdo mínimo é:
< CONF />
É possível definir alguns parâmetros do cliente, como:
<? xml version = ' 1.0 ' encoding = ' UTF-8 ' ?>
< CONF version = " 2 " >
< default >
< file_system >
< storage_rc >< adaptive >true</ adaptive ></ storage_rc >
< resume_suffix >.aspera-ckpt</ resume_suffix >
< partial_file_suffix >.partial</ partial_file_suffix >
< replace_illegal_chars >_</ replace_illegal_chars >
</ file_system >
</ default >
</ CONF >
asperatransferd
é um daemon que deve ser iniciado antes de usar o Transfer SDK. Ele impulsiona a transferência de arquivos entre dois endpoints usando ascp
incorporado. O aplicativo cliente se conectará a ele usando gRPC na porta especificada.
A forma de iniciar o daemon não está especificada no SDK. Os desenvolvedores têm a opção de iniciá-lo manualmente em um terminal separado ou criar um arquivo de configuração estático e iniciá-lo usando outro método (por exemplo, um serviço systemd).
Os exemplos fornecidos aqui iniciam o daemon usando a classe TransferClient
.
Quando asperatransferd
é iniciado, se nenhum arquivo de configuração for fornecido com a opção --config
, ele espera encontrar ascp
, ascp4
, async
, libafwsfeed
, aspera-license
em pastas específicas. Para colocar todos os arquivos na mesma pasta, o arquivo de configuração deve ser fornecido e as pastas devem ser definidas.
O Makefile fornecido nos exemplos baixa o SDK e o extrai em uma única pasta, então os exemplos geram o arquivo de configuração de acordo.
Consulte a documentação do HSTS para criar um usuário e obter as credenciais.
Normalmente, um usuário da API do nó é criado assim:
/opt/aspera/bin/asnodeadmin -a -u my_node_username -p my_node_password -x my_transfer_user
Nota: As credenciais da chave de acesso (id e segredo) também podem ser usadas para o usuário da API do nó.
Compartilhamentos fornece as seguintes APIs:
<shares url>/node_api
.Os mesmos exemplos da API Node podem ser usados para Shares .
Para o Aspera on Cloud, vários itens de configuração são necessários:
org
: A Organização AoC, ou seja, o nome antes de .ibmaspera.com
na URLuser_email
: o IBMid do usuárioprivate_key
: o caminho para o arquivo PEM que contém a chave privada do usuário. O usuário configurou a chave pública associada em seu perfil de usuário AoC.client_id
: (veja abaixo) O identificador do aplicativo clienteclient_secret
: (veja abaixo) O segredo do aplicativo cliente client_id
e client_secret
podem ser:
aspera
CLI:aspera.global-cli-client
frpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb
Por exemplo, para extrair os do Aspera Connect (Drive): strings asperaconnect|grep -B1 '^aspera.drive$'
Para testar transferências para COS, você precisará de:
Este é o padrão no exemplo.
Ou também é possível usar:
private/service_creds.json
, siga: obtenha credenciais de serviço