Файлы из облака в Databoring

В обучающих видео по Databoring загрузка файлов (Excel, csv) как правило ведётся непосредственно с сервера с luxms. Есть ли возможность забирать файлы из облачных хранилищ (Яндекс.Облако, OneDrive, Google Drive)? Если да, то как?

Добрый день!

Среди предустановленных узлов - нет такой возможности.
Однако Вы можете попробовать подобрать подходящий узел по адресу: https://flows.nodered.org/
После скачивания узла и его установки (инструкция указывается обычно на странице описания узла), узел появится в списке узлов на странице Databoring и этот узел можно начинать использовать.

Подскажите, есть ли предустановленные узлы, которые работают с хранилищами по протоколу S3?
Если нет, то можете ли порекомендовать какие-то, с которыми уже был опыт работы? Вижу, что есть некоторое количество доступных вариантов, но пока не могу понять, какой подойдёт лучше.

Добрый день, предустановленных пока нет, в бэклоге есть такая задача.

Работали с установленной библиотекой MinIO Bucket Operations, которая позволяет работать с S3 like хранилищами.
https://flows.nodered.org/node/@alpine-code/node-red-contrib-minio

Спасибо за подсказку, смог найти и поставить указанную библиотеку.
Вижу на картинке кусочек тестового потока по загрузке данных из S3. Будет возможность поделиться JSON-ом этого потока?

[{"id":"71119e966fd65a17","type":"comment","z":"e9972bcb43d2b980","name":"Дамп БД в S3","info":"","x":150,"y":2120,"wires":[]},{"id":"eb5da61de0f9510d","type":"luxmsbi-dump-sql","z":"e9972bcb43d2b980","name":"","dataSource":"","sqlQuery":"SELECT *\nFROM cb.customer c \nLEFT JOIN cb.nation n ON c.c_nationkey = n.n_nationkey","csvWithNames":true,"csvDelimiter":"pipe","zipped":false,"retries":1,"delay":5000,"x":370,"y":2220,"wires":[["106970f4c6a51223"]]},{"id":"8f80e3bfa3c6bbd9","type":"inject","z":"e9972bcb43d2b980","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":2220,"wires":[["eb5da61de0f9510d"]]},{"id":"0b2f8de88d5df7ae","type":"minio-files","z":"e9972bcb43d2b980","files_name":"","host":"184e2d40cda2716d","files_operation":"fPutObject","files_bucket":"","files_object":"","files_filepath":"","files_metadata":"","x":780,"y":2220,"wires":[["fd3bf927c924e6dc"],[]]},{"id":"81f4194ebd975d34","type":"debug","z":"e9972bcb43d2b980","name":"debug 41","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1580,"y":2220,"wires":[]},{"id":"106970f4c6a51223","type":"function","z":"e9972bcb43d2b980","name":"function 27","func":"let filepath = msg.payload.sink;\nlet files = filepath.split('/');\n\nmsg.bucketName = 'temp11';\nmsg.objectName = files.at(-1);\nmsg.filePath = filepath.slice(7);\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":570,"y":2220,"wires":[["0b2f8de88d5df7ae"]]},{"id":"2942d25eb741a43f","type":"luxmsbi-transfer-data","z":"e9972bcb43d2b980","name":"","retryCount":1,"retryDelay":5000,"sourceType":"csv","sourceSqlConnIdent":"","sourceSqlQuery":"","sourceXlsFilePath":"","sourceXlsHeaderRow":"","sourceXlsFirstDataRow":"","sourceXlsSheetNumbers":"","sourceXlsStreamProcessing":false,"sourceXlsDropFileOnComplete":false,"sourceCsvFileEncoding":"utf-8","sourceCsvFilePath":"","sourceCsvWithNames":true,"sourceCsvDelimiter":"pipe","sourceCsvZipped":false,"sourceCsvDropFileOnComplete":true,"sourceDbfFileEncoding":"utf-8","sourceDbfFilePath":"","sourceDbfDropFileOnComplete":false,"destinationType":"sql","destinationSqlConnIdent":"","destinationSqlSchemaName":"","destinationSqlTableName":"","destinationSqlMode":"truncate","destinationSqlTryToCast":true,"destinationSqlChunkSize":1000,"destinationCsvWithNames":true,"destinationCsvDelimiter":"comma","destinationCsvZipped":false,"allowed":"sql_sql,sql_csv,xls_sql,csv_sql,dbf_sql","x":1370,"y":2220,"wires":[["81f4194ebd975d34"]]},{"id":"fd3bf927c924e6dc","type":"function","z":"e9972bcb43d2b980","name":"function 34","func":"msg.destinationSqlConnIdent = 'luxmsbi';\nmsg.sourceCsvFilePath = msg.filePath;\nmsg.destinationSqlSchemaName = 'cb';\nmsg.destinationSqlTableName = 'temp11';\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1010,"y":2220,"wires":[["e31c40ca0085cbf2"]]},{"id":"e31c40ca0085cbf2","type":"luxmsbi-run-sql","z":"e9972bcb43d2b980","name":"","retryCount":1,"retryDelay":5000,"dataSource":"luxmsbi","errorToPayload":false,"query":"CREATE TABLE IF NOT EXISTS cb.temp11 (\n\tc_custkey int4 NULL,\n\tc_name text NULL,\n\tc_adress text NULL,\n\tc_nationkey int4 NULL,\n\tc_phone text NULL,\n\tc_acctbal text NULL,\n\tc_mktsegment text NULL,\n\tc_comment text NULL,\n\tn_nationkey int4 NULL,\n\tn_name text NULL,\n\tn_regionkey int4 NULL,\n\tn_comment text NULL\n);","x":1180,"y":2220,"wires":[["2942d25eb741a43f"]]},{"id":"78c1231bc54929e8","type":"debug","z":"e9972bcb43d2b980","name":"debug 63","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":1420,"y":2100,"wires":[]},{"id":"ffc9f87da1774679","type":"inject","z":"e9972bcb43d2b980","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1000,"y":2400,"wires":[["029f70014b4e0024"]]},{"id":"029f70014b4e0024","type":"minio-buckets","z":"e9972bcb43d2b980","buckets_name":"","host":"184e2d40cda2716d","buckets_operation":"makeBucket","buckets_bucket":"temp11","buckets_region":"","buckets_prefix":"","buckets_recursive":false,"buckets_start_after":"","x":1250,"y":2400,"wires":[["329b94fb4954f4b8"],[]]},{"id":"329b94fb4954f4b8","type":"debug","z":"e9972bcb43d2b980","name":"debug 61","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1460,"y":2400,"wires":[]},{"id":"38368f7b6875486f","type":"inject","z":"e9972bcb43d2b980","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":980,"y":2480,"wires":[["c4bb6aaf65157f36"]]},{"id":"c4bb6aaf65157f36","type":"minio-buckets","z":"e9972bcb43d2b980","buckets_name":"","host":"184e2d40cda2716d","buckets_operation":"listObjects","buckets_bucket":"temp11","buckets_region":"","buckets_prefix":"","buckets_recursive":false,"buckets_start_after":"","x":1210,"y":2480,"wires":[["324b4c259ff921a0"],[]]},{"id":"324b4c259ff921a0","type":"debug","z":"e9972bcb43d2b980","name":"debug 62","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1440,"y":2480,"wires":[]},{"id":"184e2d40cda2716d","type":"minio-config","name":"MinIO Instance","host":"192.168.116.207","port":"9000","useSsl":false}]
1 лайк

Разобрался с примером, спасибо!
.
Пробую собрать самый минимальный пример с использованием “fGetObject” - DataBoring постоянно падает. Вроде всё прописано правильно и видно, что статус выставляется правильный:

После появления этого сообщения я вижу такое:

Код потока такой:

[{"id":"3c1e8f715078f3e4","type":"group","z":"90bf99ef184178d0","style":{"fill":"none","color":"#a4a4a4","label":true,"stroke":"#999999","fill-opacity":"1","label-position":"nw","stroke-opacity":"1"},"nodes":["9ec3d9a7a7ec9462","a3c891c0cef0dee9","c0013e8c1ef72759","ba5ed7b158dbf763","29ef8e2953c9ef69"],"x":114,"y":1239,"w":872,"h":162},{"id":"9ec3d9a7a7ec9462","type":"comment","z":"90bf99ef184178d0","g":"3c1e8f715078f3e4","name":"Get from S3","info":"","x":210,"y":1280,"wires":[]},{"id":"a3c891c0cef0dee9","type":"inject","z":"90bf99ef184178d0","g":"3c1e8f715078f3e4","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":230,"y":1360,"wires":[["c0013e8c1ef72759"]]},{"id":"c0013e8c1ef72759","type":"minio-files","z":"90bf99ef184178d0","g":"3c1e8f715078f3e4","files_name":"","host":"4a93baeaeb7ab76c","files_operation":"fGetObject","files_bucket":"temp11","files_object":"dumpTable-1062492355159395056.csv","files_filepath":"/tmp/test_databoring/dumpTable-1062492355159395056.csv","files_metadata":"","x":440,"y":1360,"wires":[["ba5ed7b158dbf763"],["29ef8e2953c9ef69"]]},{"id":"ba5ed7b158dbf763","type":"debug","z":"90bf99ef184178d0","g":"3c1e8f715078f3e4","name":"debug 95","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":860,"y":1300,"wires":[]},{"id":"29ef8e2953c9ef69","type":"debug","z":"90bf99ef184178d0","g":"3c1e8f715078f3e4","name":"debug 96","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":880,"y":1360,"wires":[]},{"id":"4a93baeaeb7ab76c","type":"minio-config","name":"S3 YC","host":"storage.yandexcloud.net","port":"443","useSsl":true}]

.
Сможете помочь разобраться что идёт не так?

Добрый день, предлагает ли всплывающее окно синхронизировать все изменения?
На этом стенде только вы активный пользователь?
Пробовали рестартовать сам Data Boring?

Добрый день, предлагает ли всплывающее окно синхронизировать все изменения?

Возникает вот такое окно:

После него, появляется такое:

При любом развитии событий (выборе пунктов) абсолютно все потоки будут удалены.
После каждой попытки надо восстанавливаться из бэкапа - очень утомительно.
.
.

На этом стенде только вы активный пользователь?

Да, только я один.
.
.

Пробовали рестартовать сам Data Boring?

Попробовал так:

sudo systemctl restart luxms-databoring

и полностью рестартовал всю машину с luxms - результат не меняется, как на картинках выше.
.
.
Вижу, что статус извлекаемого с сервера файла у дэша устанавливается и потом происходит падение. Возможно, что minioClient.fGetObject не выполняется корректно:

 case "fGetObject":
                    helpers.statusUpdate(node, "blue", "dot", 'Getting object "' + opParams.objectName + '"');
                    minioClient.fGetObject(opParams.bucketName, opParams.objectName, opParams.filePath, function (err) {
                        if (err) {
                            node.output = { 'fGetObject': false };
                            node.error = err;
                            helpers.statusUpdate(node, "red", "dot", 'Error', 5000);
                        } else {
                            node.output = { 'fGetObject': true };
                            node.error = null;
                            helpers.statusUpdate(node, "green", "dot", 'Get object "' + opParams.objectName + '" successful', 3000);
                        }
                    })
                    break;

.
Возможно. у вас есть что-то гарантированно рабочее с “fGetObject”, чтобы можно было адаптировать и проверить?

Мы не сталкивались с нестандартным поведением этого узла.
Скажите, до того, как установили библиотеку эту, были подобные ситуации со стендом?

На этой библиотеке на других узлах такое тоже было, когда что-то неверное на вход передавал.
С другими узлами навскидку не помню такого.

Установил библиотеку на соседний стенд и запустил свой тестовый поток - работает.

На стенде с такими компонентами работает как часы:

luxmsbi-appserver-8.11.2-20230216.x86_64
luxmsbi-bins-8.10.1-20230206.el7.x86_64
luxmsbi-datagate-8.11.2-20230216.x86_64
luxmsbi-pg-8.11.11-20230306.el7.x86_64
luxmsbi-docs-8.0.20-20221121.noarch
luxmsbi-jdbc-7.0.8-20220131.x86_64
luxms-databoring-8.9.2-20230215.el7.x86_64
luxmsbi-importer-8.11.2-20230216.x86_64
luxmsbi-web-8.11.3-20230302.el7.x86_64
luxmsbi-headless-chrome-7.0.0-20220314.el7.x86_64

На этом стенде падает и ещё все потоки сносит:

luxmsbi-docs-8.0.20-20221121.noarch
luxmsbi-headless-chrome-8.9.0-20221019.el7.x86_64
luxmsbi-datagate-8.11.5-20230321.x86_64
luxms-databoring-8.12.0-20230329.el7.x86_64
luxmsbi-gateway-8.10.4-20230131.el7.x86_64
luxmsbi-pg-ds-demo171-4.0.1-20230320.el7.noarch
luxmsbi-pg-8.12.1-20230324.el7.x86_64
luxmsbi-jdbc-8.11.4-20230307.x86_64
luxmsbi-appserver-8.11.5-20230321.x86_64
luxmsbi-importer-8.11.5-20230321.x86_64
luxmsbi-pg-res-demo171-20230320-1.x86_64
luxmsbi-bins-8.12.0-20230411.el7.x86_64
luxmsbi-web-9.0.1-20230407.el7.x86_64

Вероятно, что-то в текущей версии не так.