Тайм-аут функции Azure или ошибка при попытке записи в локальную файловую систему

То, что я пытаюсь выполнить: приложение логики сохраняет файл Excel из SFTP в хранилище BLOB-объектов. Затем приложение логики передает сведения о большом двоичном объекте в лазерную функцию, которая извлекает большой двоичный объект и хранит его локально. Следующая функция берет путь к этому локально сохраненному файлу Excel и преобразует его в JSON. Затем этот JSON вставляется в БД. У меня это все работает локально.

Проблема заключается в попытке получить первую функцию, в которой вы передаете ей имя файла и контейнер большого двоичного объекта и читаете его. Оттуда он должен его сохранить. Я безуспешно пытался использовать D: / HOME для функции лазурного или 'D: / local / Temp /.

Я либо получаю это исключение при использовании этих путей

Exception while executing function: Functions.retrieveAndStoreBlobFile. mscorlib: StorageError: NotFound
at Function.StorageServiceClient._normalizeError (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:1181:23)
at BlobService.StorageServiceClient._processResponse (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:736:50)
at Request.processResponseCallback [as _callback] (D:\home\site\wwwroot\node_modules\azure-storage\lib\common\services\storageserviceclient.js:317:37)
at Request.self.callback (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:187:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:1044:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (D:\home\site\wwwroot\node_modules\azure-storage\node_modules\request\request.js:965:12).

Вот моя функция для получения подробных сведений о BLOB-объекте

var blobRepo = require("../repository/blobStorage.js");
const localFileStoragePath = process.env["LocalDiskLocation"];

module.exports = function (context, req) {
context.log('Blob HTTP trigger function processed a request.');
context.log('Local path: ' + localFileStoragePath);
if(req.body){
    var fileName = req.body.fileName;
    var container = req.body.container;
    blobRepo.getBlob(container, fileName).then( (result) => {
        // Return blob details             
        context.done(null, {
            status: 200,
            body:  {
                "blobDetails" : result.blobDetails,
                "filePath" : result.filePath
            }
        })
    }).catch( (err) => {
        context.done(err);
    });
}
else { 
    context.done("Please pass a name on the query string or in the request body", {
        status: 400,
        body: "Please pass a name on the query string or in the request body"
    });
}
};

Вот мое репо для чтения из хранилища BLOB-объектов и сохранения файла

var azure = require('azure-storage');
var fs = require('fs');

const localFileStoragePath = process.env["LocalDiskLocation"];
var webStorageConnectionString = process.env["AzureWebJobsStorage"];
var blobService = azure.createBlobService(webStorageConnectionString);

var exportObject = {
getBlob: function(container, blobName){
    return new Promise ( (resolve, reject) => {
        // Read file from blob and store on drive
        blobService.getBlobToStream(container, blobName, 
fs.createWriteStream(localFileStoragePath + blobName), function(error, serverBlob) {
            if(error){
                reject(error);
                return;
            }
            const blobDetails  = {
                filePath: localFileStoragePath + blobName,
                blobDetails: JSON.stringify(serverBlob)
            }
            // Return blob details and path to file
            resolve(blobDetails);
        }); 
    });
}
}

module.exports = exportObject;

Любые идеи?

edit: после дальнейшего исследования выяснилось, что в каталоге D: \ Home создается пустой файл, но он ничего не содержит. Кажется, что ошибка указывает на хранилище BLOB-объектов, что странно, потому что запрос точно такой же, как мой локальный.


person mortey    schedule 12.07.2017    source источник


Ответы (1)


... и я понял это

По-видимому, мое значение AzureWebJobsStorage в приложении-функции было указано на другое хранилище. Обновление этого исправлено.

person mortey    schedule 12.07.2017