Пример кода с использованием API-интерфейсов IBM Aspera для различных продуктов и SDK IBM Aspera:
Предлагаются различные языки программирования.
Документация IBM Aspera API (выберите 24 элемента на странице внизу).
Документация Aspera Transfer SDK содержит примеры кода.
Видео о Transfer SDK
Сайт GitHub IBM Aspera Connect SDK содержит примеры использования Aspera Connect SDK.
IBM Aspera предоставляет два типа API:
Клиентские API:
SDK включают библиотеки , которые будут использоваться в приложениях для передачи файлов.
Серверные API:
API REST (со спецификацией OpenAPI) взаимодействуют с приложениями Aspera (Faspex, AoC, Node API, COS и т. д.).
В зависимости от варианта использования можно использовать один или (часто) несколько таких API.
Этот репозиторий структурирован следующим образом:
web
: пример, показывающий использование веб-SDKd: как Aspera Connect SDK , так и Aspera HTTP Gateway SDK.
app
: примеры на разных языках с использованием Aspera Transfer SDK и REST API Aspera Applications.
Внутри каждой языковой папки вы найдете:
README.md
: специальный README для языка.Makefile
: make-файл для запуска примеров.src
: исходный код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 (здесь) и извлеките его содержимое в папку, указанную в sdk_dir
в config/paths.yaml
: <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
и некоторые инструменты для компиляции файла прототипа SDK передачи, см. раздел 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
примере.
Другие разделы используются в различных примерах. Например, если вы хотите протестировать только передачу COS с помощью Transfer SDK, вы можете заполнить только раздел 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
Примечание. Разделы с URL-адресами HTTPS имеют
verify
. Установите значениеfalse
, чтобы отключить проверку сертификата сервера для сред разработки.
Некоторые относительные пути определены в config/paths.yaml
(сохраните эти значения).
Можно установить следующие уровни журнала:
misc.level
: уровень журнала примера кода: error
warning
debug
info
trsdk.level
: уровень журнала asperatransferd: trace
info
debug
warning
error
fatal
panic
trsdk.ascp_level
: уровень журнала ascp: trace
debug
info
В некоторых примерах поддерживается установка порта в 0
(ноль) в trsdk.url
для использования случайного порта.
Пример приложения генерирует файл 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
для простых вызовов API для Rest API.Transfer SDK требует следующих файлов времени выполнения:
asperatransferd
: исполняемый файл, предоставляющий службу gRPC.ascp
: исполняемый файл, который фактически передает файлыascp4
: другая версия ascpasync
: исполняемый файл для асинхронных операций.libafwsfeed
: библиотека ascp
для веб-сокетов.aspera-license
: файл лицензии для ascp
(бесплатное использование)Дополнительные файлы:
aspera.conf
: файл конфигурации для ascp
product-info.mf
: XML-файл с информацией о версии SDK.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, чтобы создать пользователя и получить учетные данные.
Обычно пользователь node api создается следующим образом:
/opt/aspera/bin/asnodeadmin -a -u my_node_username -p my_node_password -x my_transfer_user
Примечание. Учетные данные ключа доступа (идентификатор и секрет) также можно использовать для пользователя API узла.
Shares предоставляет следующие API:
<shares url>/node_api
.Для Shares можно использовать те же примеры, что и для Node API .
Для Aspera on Cloud требуется несколько элементов конфигурации:
org
: организация AoC, т. е. имя перед .ibmaspera.com
в URL-адресе.user_email
: IBMid пользователя.private_key
: путь к файлу PEM, содержащему закрытый ключ пользователя. Пользователь настроил связанный открытый ключ в своем профиле пользователя AoC.client_id
: (см. ниже) Идентификатор клиентского приложения.client_secret
: (см. ниже) Секрет клиентского приложения. client_id
и client_secret
могут быть:
aspera
:aspera.global-cli-client
frpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb
Например, чтобы извлечь файлы из Aspera Connect (Drive): strings asperaconnect|grep -B1 '^aspera.drive$'
Для тестирования переводов в COS вам понадобится:
В примере это значение по умолчанию.
Или также можно использовать:
private/service_creds.json
, следуйте инструкциям: получите учетные данные службы.