Can';使用javascript的azure datalake的t列表文件系统
我正在尝试使用以下代码列出Azure datalake中文件系统内的路径: 我能够检索${fileSystem.name},但使用.listPaths()获得的权限被拒绝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('
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数据所有者
角色
那么代码就可以正常工作了: