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

如何为Azure Data Lake指定目录下的单个文件生成SAS Token?

为启用分层命名空间的Azure Data Lake Storage Gen2单个文件生成SAS Token操作指引

前提注意事项

  • 确认你使用的是已启用分层命名空间的ADLS Gen2存储账户,操作目标是单个文件而非目录/容器,生成SAS时需要指定文件的完整层级路径
  • 以下提供调试用的Azure CLI方案、业务集成用的Python SDK方案两种常用实现方式

操作方式1:Azure CLI 快速生成(适合调试验证)

需提前安装Azure CLI并完成身份认证,执行以下命令即可生成:

az storage file generate-sas --account-name <你的存储账户名> --share-name <文件系统名> --path <目录层级/目标文件名> --permissions r --expiry <UTC过期时间,示例:2024-12-31T23:59:59Z> --account-key <你的存储账户访问密钥> --auth-mode key

参数说明:

  • --path 必须填写文件的完整层级路径,比如raw/logs/202406/app.log,不需要带前导斜杠
  • --permissions 按需配置,读权限用r、写权限用w、删除权限用d,可组合使用例如rw

操作方式2:Python SDK 代码实现(适合业务集成)

先安装依赖包:
pip install azure-storage-file-datalake

代码示例:

from azure.storage.filedatalake import generate_file_sas
from datetime import datetime, timedelta

# 配置参数
storage_account_name = "你的存储账户名"
storage_account_key = "你的存储账户访问密钥"
file_system_name = "你的文件系统(容器)名"
# 填写文件的完整层级路径,示例:raw/202406/user_data.csv
file_path = "你的文件完整层级路径"

# 生成SAS Token
sas_token = generate_file_sas(
    account_name=storage_account_name,
    file_system_name=file_system_name,
    file_path=file_path,
    account_key=storage_account_key,
    # 配置权限,可按需组合
    permission="r",
    # 配置过期时间,此处设为2小时后过期
    expiry=datetime.utcnow() + timedelta(hours=2)
)

# 拼接完整的可访问文件URL
file_access_url = f"https://{storage_account_name}.dfs.core.windows.net/{file_system_name}/{file_path}?{sas_token}"
print(f"文件SAS访问链接:{file_access_url}")

常见注意事项

ADLS Gen2的文件SAS和普通Blob存储的SAS生成逻辑有差异,必须指定完整的文件层级路径,不能直接替换为Blob路径格式,否则会出现权限验证失败问题

  • 生产环境建议使用Azure AD用户委托密钥生成SAS,避免直接泄露存储账户访问密钥,只需将代码中的account_key参数替换为通过Azure AD凭证申请的user_delegation_key即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:15:02