Невозможно указать файловую систему azure datalake с javascript - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь перечислить пути в файловой системе в Azure datalake, используя этот код:

Я могу получить $ {fileSystem.name}, но получаю разрешения, запрещенные с помощью .listPaths ( )

node:15660) UnhandledPromiseRejectionWarning: RestError: This request is not authorized to perform this operation using this permission.

Я не уверен, какие разрешения мне нужно предоставить, принцип службы имеет доступ владельца к учетной записи хранения datalake, а также имеет разрешения api

enter image description here

код:

const { DataLakeServiceClient } = require('@azure/storage-file-datalake');

require('dotenv').config();

const account = 'xxx';

const defaultAzureCredential = new DefaultAzureCredential();

const datalakeServiceClient = new DataLakeServiceClient(
    `https://${account}.dfs.core.windows.net`,
    defaultAzureCredential
);

async function main() {
    let i = 1;
    let iter = await datalakeServiceClient.listFileSystems();

    for await (const fileSystem of iter) {
        console.log(`File system ${i++}: ${fileSystem.name} `);
        const fileSystemClient = datalakeServiceClient.getFileSystemClient(fileSystem.name);
        let iter = await fileSystemClient.listPaths();
        for await (const path of iter) {
            console.log(`Path ${i}: ${path.name}, is directory: ${path.isDirectory}`);
        }

    }
}

main();

1 Ответ

1 голос
/ 08 мая 2020

Чтобы устранить проблему, перейдите к своей учетной записи хранения озера данных 2-го поколения на портале -> Access control (IAM) -> назначьте роль Storage Blob Data Owner принципалу службы.

enter image description here

Тогда код работает нормально:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...