无法使用javascript列出Azure Datalake的文件系统

问题描述 投票:0回答:1

我正在尝试使用此代码列出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();

[我正在尝试使用此代码列出Azure datalake中文件系统内的路径:我能够检索$ {fileSystem.name},但通过.listPaths()节点获取权限被拒绝:15660)...] >

javascript node.js azure azure-data-lake
1个回答
0
投票

[要解决此问题,请在门户中导航至您的数据湖gen2存储帐户-> Access control (IAM)->为您的服务主体分配Storage Blob Data Owner角色。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.