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

在Azure Data Factory中能否为指定Blob生成SAS Token?

在Azure Data Factory中生成指定Blob的SAS Token

可以实现,下面是两种常用方案,适配你生成SAS Token后传入API请求的需求:

方案1:通过Web活动调用Azure Storage REST API生成SAS

无需额外服务,直接利用ADF的Web活动和托管身份完成:

  • 第一步:给ADF的系统托管身份分配存储账户的Blob Contributor权限(在存储账户的IAM页面配置)。
  • 第二步:在ADF管道中添加Web活动,配置如下:
    • URL:https://<你的存储账户名>.blob.core.windows.net/<容器名>/<CSV文件名>?restype=blob&comp=generateSAS
    • 方法:PUT
    • Headers:
      • Authorization:用ADF表达式获取托管身份令牌:@concat('Bearer ', mssparkutils.azure.getAccessToken('https://storage.azure.com/'))
      • Content-Type:application/xml
    • Body:传入SAS的权限、过期时间等配置(XML格式),示例:
      <SignedResource>b</SignedResource>
      <SignedPermission>r</SignedPermission>
      <SignedExpiry>2024-12-31T23:59:59Z</SignedExpiry>
      
  • 第三步:解析Web活动的响应,提取<SasToken>节点的值,存入管道参数,后续用于API请求的JSON payload。

方案2:通过Azure Function活动生成SAS Token

如果需要更灵活的逻辑控制,可借助Azure Function:

  • 第一步:创建Azure Function(支持C#/Python等语言),利用Azure Storage SDK生成SAS Token。示例Python代码片段:
    from azure.storage.blob import BlobServiceClient, generate_blob_sas, BlobSasPermissions
    from datetime import datetime, timedelta
    import os
    
    def main(req):
        storage_account = req.params.get('storageAccount')
        container = req.params.get('container')
        blob_name = req.params.get('blobName')
        conn_str = os.environ['AzureWebJobsStorage']
    
        blob_service_client = BlobServiceClient.from_connection_string(conn_str)
        sas_token = generate_blob_sas(
            account_name=storage_account,
            container_name=container,
            blob_name=blob_name,
            account_key=blob_service_client.credential.account_key,
            permission=BlobSasPermissions(read=True),
            expiry=datetime.utcnow() + timedelta(hours=1)
        )
        return {'sasToken': sas_token}
    
  • 第二步:在ADF中配置Azure Function Linked Service,添加Azure Function活动,传入存储账户、容器、Blob名作为参数。
  • 第三步:将Function返回的SAS Token赋值给管道参数,后续用于API请求。

方案1更轻量化,适合基础需求;方案2适合需要自定义SAS生成逻辑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:20