You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure Data Lake存储SDK:上传正常但下载报401认证错误求助

问题原因及解决方案

针对上传成功但下载时出现401 NoAuthenticationInformation错误的情况,可能的原因及对应解决方法如下:

1. 客户端初始化未正确传入共享密钥凭据

尽管上传成功,但有可能初始化DataLakeFileSystemClient时的凭据未被正确应用到下载操作中。确保你通过SharedKeyCredential创建服务客户端,再获取文件系统客户端:

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

// 替换为你的存储账户名和密钥
const accountName = "your-storage-account-name";
const accountKey = "your-storage-account-key";

const sharedKeyCredential = new SharedKeyCredential(accountName, accountKey);
const serviceClient = new DataLakeServiceClient(
  `https://${accountName}.dfs.core.windows.net`,
  sharedKeyCredential
);

// 确保下载用的fileSystemClient是通过上述服务客户端获取的
const fileSystemClient = serviceClient.getFileSystemClient("your-container-name");

2. 文件/目录ACL限制了读取权限

虽然存储账户密钥拥有最高权限,但如果上传后文件或父目录的ACL被手动修改为拒绝读取,也会导致下载失败。可以通过Azure门户检查my-directory目录和目标文件的ACL设置,确保存储账户所有者拥有read权限。

3. 存储账户配置了强制Azure AD认证

如果你的存储账户开启了仅允许Azure AD身份验证(在存储账户的「安全性+网络」或「配置」模块中设置),使用共享密钥将无法执行下载操作。此时需要切换到Azure AD认证方式,或者关闭该强制设置。

4. SDK版本兼容性问题

部分旧版本的Azure Storage Data Lake SDK可能存在readToFile方法的认证逻辑bug。尝试升级到最新版本的依赖包:

npm install @azure/storage-file-datalake@latest

另外,你的上传代码中uploadFile方法未使用await,可能导致异步操作未完成就继续执行(本次上传成功属于偶然情况),建议补上await保证操作完整性:

async function UploadFile(fileSystemClient) {
    const fileClient = fileSystemClient.getFileClient("my-directory/test.jpeg");
    await fileClient.uploadFile("test.jpeg"); // 添加await
}

内容的提问来源于stack exchange,提问作者Genu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:42:26