将 IBM Aspera API 用于各种 IBM Aspera 产品和 SDK 的示例代码:
提出了各种编程语言。
IBM Aspera API 文档(在底部每页选择 24 个项目)。
Aspera Transfer SDK 文档包含代码示例。
有关传输 SDK 的视频
IBM Aspera Connect SDK github 站点包含有关使用 Aspera Connect SDK 的示例。
IBM Aspera 提供两种类型的 API:
客户端 API:
SDK 包含应用程序中用于传输文件的库
服务器API:
REST API(符合 OpenAPI 规范)与 Aspera 应用程序(Faspex、AoC、Node API、COS 等)交互
根据用例,人们可能会使用其中的一个或(通常)多个 API。
该存储库的结构如下:
web
:显示 web SDKd 使用的示例: Aspera Connect SDK和Aspera HTTP Gateway SDK
app
:使用Aspera Transfer SDK和Aspera 应用程序 REST API 的各种语言示例
在每个语言文件夹中,您会发现:
README.md
:该语言的特定自述文件Makefile
:用于运行示例的 makefilesrc
:源代码src/utils
:辅助类src/examples
:示例程序示例程序将使用 YAML 配置文件中的服务器地址和凭据。配置文件创建完成后,可以直接运行示例程序。
类 Unix 系统:Linux、macOS...提供了一个Makefile
来运行示例。
Windows :请参阅下面的快速入门 (Windows)。 make
可能不可用。使用Makefile
作为参考来手动执行命令。
请参阅运行示例程序。
第一次执行make
时:将自动下载 Transfer SDK。
要下载 SDK,请执行: make sdk
。
参考配置文件:将文件config/config.tmpl
复制到private/config.yaml
并填写值。
md private
copy configconfig.tmpl privateconfig.yaml
将参数misc.platform
设置为windows-x86_64
在private/config.yaml
中编辑所需参数,例如 Faspex 连接信息。
注意:是的,您还可以拖放、单击、复制/粘贴、使用记事本等编辑文件...
准备SDK文件夹
md tmp
下载 Aspera Transfer SDK(此处)并将其内容解压到config/paths.yaml
中sdk_dir
标识的文件夹:
注意:确保
config/paths.yaml
中标识的文件按预期位于提取的文件夹中。例如,以下文件必须存在:
/tmp/transfer_sdk/bin/asperatransferd
运行示例:请参阅运行示例程序
按照配置文件中的指定创建配置文件。并非所有值都是必需的,只需那些您想要运行的示例所需的值。
例如,要执行单个示例,请使用make .tested/
:
$ cd app/python
$ make list
server aoc faspex faspex5 node shares node_v2
$ make .tested/faspex5
运行示例需要下载Transfer SDK守护asperatransferd
,以及一些编译Transfer SDK proto文件的工具,请参见Transfer SDK。
详细内容请参考各语言Makefile
中的配方。
提供了一个模板配置文件: config/config.tmpl
。
将文件config/config.tmpl
复制到private/config.yaml
并填写您自己的服务器地址、凭据和参数。
cp config/config.tmpl private/config.yaml
vi private/config.yaml
注意:虽然格式可能类似于
ascli
的配置文件,ascli
的配置文件与此不兼容。您必须创建一个新的。
将参数misc.platform
设置为所使用的架构:
osx-arm64
osx-x86_64
windows-x86_64
linux-x86_64
linux-s390
linux-arm64
linux-ppc64le
aix-ppc64
参数trsdk.url
可以设置为grpc://127.0.0.1:55002
(指定sdk将使用的本地端口)。
httpgw
部分仅由web
示例使用。
其他部分由各种示例使用。例如,如果您只想使用Transfer SDK测试COS传输,则可以只填写cos
部分,其他部分留空。
示例(使用随机凭据):
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
注意:带有 HTTPS URL 的部分有一个参数
verify
。将其设置为false
以禁用开发环境的服务器证书验证。
一些相对路径在config/paths.yaml
中定义(保持这些值不变)。
可以设置以下日志级别:
misc.level
:示例代码日志级别: debug
info
warning
error
trsdk.level
:asperatransferd 日志级别: trace
debug
info
warning
error
fatal
panic
trsdk.ascp_level
:ascp 日志级别: trace
debug
info
一些示例支持在trsdk.url
中将端口设置为0
(零)以使用随机端口。
示例应用程序生成一个文件asperatransferd.conf
提供给传输 sdk 守护进程,其中的日志级别取自通用 yaml 配置文件。
Transfer SDK 是一项 gRPC 服务,允许您在应用程序中传输文件。它是一个可以用多种语言使用的客户端 API。
文件transfer.proto
描述了守护进程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 |
+------+
客户端应用程序必须使用从transfer.proto
文件生成的客户端源文件。
为了方便起见,Transfer SDK 中提供了针对多种语言的生成(存根)代码。它可以直接使用,或者开发人员可以选择从transfer.proto
文件生成它们。为了生产和未来的兼容性,建议从transfer.proto
文件生成存根代码。如果您自己生成存根代码,那么您可以从对最新平台和版本的支持中受益。
这里的大多数示例都会从transfer.proto
文件生成存根代码。
有关如何生成代码的说明,请参阅 GRPC 网站。
示例程序使用位于包utils
中的帮助程序类:
Configuration
从config.yaml
读取配置参数,以便更轻松地运行任何示例。TransferClient
创建配置文件并启动 Transfer SDK 守护进程: asperatransferd
Rest
用于 Rest API 上的简单 API 调用。Transfer SDK 需要以下运行时文件:
asperatransferd
:提供 gRPC 服务的可执行文件ascp
:实际传输文件的可执行文件ascp4
: ascp 的另一个版本async
:异步操作的可执行文件libafwsfeed
:用于 Web 套接字的ascp
库aspera-license
: ascp
的许可证文件(免费使用)可选文件:
aspera.conf
: ascp
的配置文件product-info.mf
:包含 SDK 版本信息的 XML 文件aspera.conf
当在客户端模式下使用时,该文件对于ascp
是可选的。
最低限度的内容是:
< CONF />
可以设置一些客户端参数,例如:
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
是一个守护进程,必须在使用 Transfer SDK 之前启动。它使用嵌入式ascp
驱动两个端点之间的文件传输。客户端应用程序将使用指定端口上的 gRPC 连接到它。
SDK中没有指定守护进程的启动方式。开发人员可以选择在单独的终端中手动启动它,或者创建静态配置文件并使用其他方法(例如 systemd 服务)启动它。
此处提供的示例使用TransferClient
类启动守护程序。
当asperatransferd
启动时,如果没有通过选项--config
提供配置文件,则它期望在特定文件夹中找到ascp
、 ascp4
、 async
、 libafwsfeed
、 aspera-license
。为了将所有文件放在同一个文件夹中,必须提供配置文件并设置文件夹。
示例中提供的 Makefile 下载 SDK 并将其解压到单个文件夹中,然后示例相应地生成配置文件。
请参阅 HSTS 文档来创建用户并获取凭据。
通常,节点 api 用户是这样创建的:
/opt/aspera/bin/asnodeadmin -a -u my_node_username -p my_node_password -x my_transfer_user
注意:访问密钥凭据(id 和机密)也可用于节点 api 用户。
Shares提供以下API:
/node_api
。与Node API相同的示例可用于Shares 。
对于 Aspera on Cloud,需要几个配置项:
org
:AoC 组织,即 URL 中.ibmaspera.com
之前的名称user_email
:用户的 IBMidprivate_key
:包含用户私钥的 PEM 文件的路径。用户在其 AoC 用户配置文件中配置了关联的公钥。client_id
:(见下文)客户端应用程序标识符client_secret
:(见下文)客户端应用程序秘密client_id
和client_secret
可以是:
aspera
CLI 之一:aspera.global-cli-client
frpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb
例如,要提取 Aspera Connect (Drive) 的内容: strings asperaconnect|grep -B1 '^aspera.drive$'
要测试向 COS 的传输,您将需要:
这是示例中的默认值。
或者也可以使用:
private/service_creds.json
,然后:获取服务凭证