Я использую BLOB-объекты Azure и загружаю изображения в виде BLOB-объектов в контейнер, вчера все работало, но по какой-то причине сегодня, когда я пытаюсь создать BLOB-объект (загружать изображение), я получаю сообщение об ошибке:
(node:5412) UnhandledPromiseRejectionWarning: Error: <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
RequestId:742c79aa-601e-0046-2f47-bd0f64000000
Time:2019-02-05T11:38:04.9687033Z</Message><AuthenticationErrorDetail>The MAC signature found in the HTTP request 'iEGyntz0xOL6HddnoD/F6GxkHjyZlxEGTQ21OjlWCy4=' is not the same as any computed signature. Server used following string to sign: 'PUT
67
application/xml; charset=utf-8
Я уже создал контейнер, и у него есть доступ к контейнеру и BLOB-объектам, как это было раньше.Я возвращаю containerURL и blobURL, как если бы этот двоичный объект был создан, я возвращаю URL контейнера:
https://facerstorage.blob.core.windows.net/suspects
, и я также получаю BlobURL:
"https://facerstorage.blob.core.windows.net/suspects/whoever.jpg"
но когда я проверяю лазурную панель внутри контейнера, блоба там нет.
Я также проверил свое время, я был на UTC + 2 и переключил его на UTC 0, который равен GMTЯ получаю с сервера, но он работал вчера и в GMT + 2.Не уверен, почему я получаю это, все работало раньше.
Спасибо
ОБНОВЛЕНИЕ 1:
Я поместил код, выполняющий загрузку, в блок try catch, и я получилошибка в этом формате:
'<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nRequestId:6b27b7c2-601e-0024-474c-bdcd43000000\nTime:2019-02-05T12:14:44.3155159Z</Message><AuthenticationErrorDetail>The MAC signature found in the HTTP request \'n/0RjbOhVCOHSkWlq4JWqPsgMe7UxkuyrA1HV1Y1AcY=\' is not the same as any computed signature. Server used following string to sign: \'PUT\n\n\n67\n\napplication/xml; charset=utf-8\n\n\n\n\n\n\nx-ms-client-request-id:ce83a49c-51fb-476e-b4ab-25968c162d82\nx-ms-date:Tue, 05 Feb 2019 12:14:43 GMT\nx-ms-version:2018-03-28\n/facerstorage/watchlist/CHRISTOPHER%20ROBERT%20METSOS.jpg\ncomp:blocklist\ntimeout:60000\'.</AuthenticationErrorDetail></Error>',
headers: HttpHeaders { _headersMap: [Object] },
status: 403 },
body:
{ message:
'Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.\nRequestId:6b27b7c2-601e-0024-474c-bdcd43000000\nTime:2019-02-05T12:14:44.3155159Z' } }
Вот мой код, который выполняет загрузку. Я взял базу из Azure SDK и немного ее изменил:
async function uploadImage(aborter, containerURL, filePath, blobName) {
try{
filePath = path.resolve(filePath);
const blockBlobURL = BlockBlobURL.fromContainerURL(containerURL, blobName);
console.log("Blob created, URL is: " + JSON.stringify(blockBlobURL.url));
const stream = fs.createReadStream(filePath, {
highWaterMark: FOUR_MEGABYTES,
});
const uploadOptions = {
bufferSize: FOUR_MEGABYTES,
maxBuffers: 5,
};
//SAVE URL TO DB
addToDB(blobName, blockBlobURL.url);
return await uploadStreamToBlockBlob(
aborter,
stream,
blockBlobURL,
uploadOptions.bufferSize,
uploadOptions.maxBuffers);
} catch (err) {console.log(err)}
}
UPDATE #2
-Проверены Azure Keys, обновлены и заменены.
-Возможно создавать контейнеры без каких-либо ошибок аутентификации.
-Пробовав использование обычного uploadLocalFile вместо потока, вы получите ошибку.