Can';使用javascript的azure datalake的t列表文件系统

Can';使用javascript的azure datalake的t列表文件系统,javascript,node.js,azure,azure-data-lake,Javascript,Node.js,Azure,Azure Data Lake,我正在尝试使用以下代码列出Azure datalake中文件系统内的路径: 我能够检索${fileSystem.name},但使用.listPaths()获得的权限被拒绝 node:15660)未经处理的PromisejectionWarning:RestError:此请求无权使用此权限执行此操作。 我不确定我需要提供什么权限,服务原则拥有对datalake存储帐户的所有者访问权限,也拥有api权限 守则: const { DataLakeServiceClient } = require('

我正在尝试使用以下代码列出Azure datalake中文件系统内的路径:

我能够检索${fileSystem.name},但使用.listPaths()获得的权限被拒绝

node:15660)未经处理的PromisejectionWarning:RestError:此请求无权使用此权限执行此操作。

我不确定我需要提供什么权限,服务原则拥有对datalake存储帐户的所有者访问权限,也拥有api权限

守则:

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();


要解决此问题,请导航到门户中的data lake gen2存储帐户->
访问控制(IAM)
->为服务主体分配
存储Blob数据所有者
角色

那么代码就可以正常工作了: