Пример кода с использованием 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-arm64osx-x86_64windows-x86_64linux-x86_64linux-s390linux-arm64linux-ppc64leaix-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 infotrsdk.level : уровень журнала asperatransferd: trace info debug warning error fatal panictrsdk.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: asperatransferdRest для простых вызовов API для Rest API.Transfer SDK требует следующих файлов времени выполнения:
asperatransferd : исполняемый файл, предоставляющий службу gRPC.ascp : исполняемый файл, который фактически передает файлыascp4 : другая версия ascpasync : исполняемый файл для асинхронных операций.libafwsfeed : библиотека ascp для веб-сокетов.aspera-license : файл лицензии для ascp (бесплатное использование)Дополнительные файлы:
aspera.conf : файл конфигурации для ascpproduct-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-clientfrpmsRsG4mjZ0PlxCgdJlvONqBg4Vlpz_IX7gXmBMAfsgMLy2FO6CXLodKfKAuhqnCqSptLbe_wdmnm9JRuEPO-PpFqpq_Kb Например, чтобы извлечь файлы из Aspera Connect (Drive): strings asperaconnect|grep -B1 '^aspera.drive$'
Для тестирования переводов в COS вам понадобится:
В примере это значение по умолчанию.
Или также можно использовать:
private/service_creds.json , следуйте инструкциям: получите учетные данные службы.