Я пытаюсь отправить файл в хранилище BLOB-объектов Azure. Что я сделал до сих пор:
npm i @azure/identity @azure/storage-blob
Сгенерируйте параметры запроса SAS с ключом делегирования пользователя:
async function generateSas() {
const startDate = new Date();
const expiryDate = new Date();
startDate.setTime(startDate.getTime() - 100 * 60 * 1000);
expiryDate.setTime(expiryDate.getTime() + 100 * 60 * 60 * 1000);
const credential = new DefaultAzureCredential();
const blobServiceClient = new BlobServiceClient(STORAGE, credential);
const key = await blobServiceClient.getUserDelegationKey(startDate, expiryDate);
return generateBlobSASQueryParameters({
containerName: CONTAINER,
startsOn: startDate,
expiresOn : expiryDate,
permissions: ContainerSASPermissions.parse('rwl'),
}, key, ACCOUNT).toString();
}
Используйте сгенерированный SAS для загрузки
async function upload(sasToken: string) {
const blobClient = new BlockBlobClient(
`https://${ACCOUNT}.blob.core.windows.net/${CONTAINER}/test.json?${sasToken}`);
const content = 'some content';
const response = await blobClient.upload(content, content.length);
}
Прежде чем запустить это, я делаю az login
со своей учетной записью.
Ошибка:
(node:19584) UnhandledPromiseRejectionWarning: RestError: This request is not authorized to perform
this operation using this permission.
Если я скопирую SAS из Azure Storage Explorer с тем же именем входа, код заработает! Поэтому я предполагаю, что есть способ получить действующий SAS для моей учетной записи.