将 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标识的文件夹: <main folder>/tmp/transfer_sdk
注意:确保
config/paths.yaml中标识的文件按预期位于提取的文件夹中。例如,以下文件必须存在:<main folder>/tmp/transfer_sdk/bin/asperatransferd
运行示例:请参阅运行示例程序
按照配置文件中的指定创建配置文件。并非所有值都是必需的,只需那些您想要运行的示例所需的值。
例如,要执行单个示例,请使用make .tested/<sample name here> :
$ 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-arm64osx-x86_64windows-x86_64linux-x86_64linux-s390linux-arm64linux-ppc64leaix-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 errortrsdk.level :asperatransferd 日志级别: trace debug info warning error fatal panictrsdk.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 守护进程: asperatransferdRest用于 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:
<shares url>/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-clientfrpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb例如,要提取 Aspera Connect (Drive) 的内容: strings asperaconnect|grep -B1 '^aspera.drive$'
要测试向 COS 的传输,您将需要:
这是示例中的默认值。
或者也可以使用:
private/service_creds.json ,然后:获取服务凭证