Я установил лазурную функцию, которая запускается при добавлении большого двоичного объекта в конкретный контейнер. Большой двоичный объект представляет собой файл .zip. Я намерен использовать adm-zip
для извлечения большого двоичного объекта в каталог и последующего чтения содержимого. Меня смущает документация здесь: https://github.com/Azure/azure-content/blob/master/articles/azure-functions/functions-bindings-storage.md#blob-trigger-поддерживаемыетипы Это говорит о том, что входной параметр может быть либо объектом, либо строкой. Я не вижу места в файле function.json, чтобы указать, каким должен быть ввод.
В моем коде ниже этот тип выглядит как строка, но, поскольку он ничего не печатает, я предполагаю, что на самом деле это буфер байтов, представляющий содержимое файла. Чтобы поработать с этим, Я попытался записать буфер в локальный файл, но безуспешно. Не было ни ошибки, ни распечатки saved blob to...
В моем function.json у меня есть это:
{
"bindings": [
{
"name": "xmlZipBlob",
"type": "blobTrigger",
"direction": "in",
"path": "balancedataxml",
"connection": "sc2iq_STORAGE"
}
],
"disabled": false
}
И затем у меня есть xmlZipBlob
в качестве второго аргумента моей функции:
var fs = require('fs');
module.exports = function (context, xmlZipBlob) {
context.log('Node.js blob trigger function processed blob:', xmlZipBlob);
context.log(`typeof xmlZipBlob:`, typeof xmlZipBlob);
fs.writeFile('xmlZip.zip', xmlZipBlob, (err) => {
if (err) {
throw err;
}
context.log('saved blob to loal file called xmlZip.zip');
context.done();
});
};
1. Каков тип входных параметров функции для больших двоичных объектов?
2. Как мне контролировать, является ли входной параметр объектом или строкой?
3. Можно ли использовать собственный модуль node fs
для записи в локальную файловую систему для извлечения файла .zip?
Обновление: я считаю, что это не удается из-за попытки использовать файловую систему, и открыл здесь отдельный более изолированный вопрос: Функции Azure: Nodejs, каковы ограничения / ограничения при использовании файловой системы?
4. Есть ли лучшая альтернатива, чем использование файлов .zip?
Пока это не будет решено, я думаю, что придумаю другое решение для работы с файлом .zip. Либо делать все в памяти с потоками, либо избегать файлов .zip вместе и просто создавать большой XML-файл из меньших XML-файлов. В любом случае, похоже, должна быть некоторая документация или предупреждение о том, что потребуется для переноса функции узла, зависящей от файловой системы, на функции Azure.