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

如何创建可安全写入Data Lake Gen2的Azure函数应用?

实现步骤与示例代码

1. 创建Timer触发的Azure函数

选择Python Timer触发器,设置CRON表达式实现每月执行(比如0 0 2 1 * *表示每月1号凌晨2点执行,可按需调整)。

2. 配置托管标识访问Data Lake Gen2

由于你无角色修改权限,需联系Azure管理员完成以下操作:

  • 为你的函数应用启用系统分配托管标识
  • 给该托管标识分配目标Data Lake Gen2存储账户的Storage Blob Data Contributor角色(可限定到特定容器或路径)

通过托管标识认证无需硬编码密钥,Azure会自动处理身份校验。

3. 代码改造与依赖配置

首先在函数应用的requirements.txt中添加依赖:

azure-functions
pandas
azure-storage-file-datalake
azure-identity

以下是函数核心代码(__init__.py):

import azure.functions as func
import pandas as pd
from azure.storage.filedatalake import DataLakeServiceClient
from azure.identity import ManagedIdentityCredential
import os

def main(mytimer: func.TimerRequest) -> None:
    # 从API拉取CSV数据
    base_url = "https://www.example.com/id="
    target_id = 108  # 可改为从环境变量读取:os.getenv("TARGET_ID")
    csv_url = base_url + str(target_id)
    data = pd.read_csv(csv_url)

    # 从应用配置读取ADLS参数
    storage_account = os.getenv("STORAGE_ACCOUNT_NAME")
    container_name = os.getenv("CONTAINER_NAME")
    adls_file_path = f"your-folder/{target_id}.csv"

    # 托管标识认证并上传文件
    credential = ManagedIdentityCredential()
    service_client = DataLakeServiceClient(
        account_url=f"https://{storage_account}.dfs.core.windows.net",
        credential=credential
    )

    file_system_client = service_client.get_file_system_client(container_name)
    file_client = file_system_client.create_file(adls_file_path)
    
    # 将DataFrame转为CSV字节流上传
    csv_content = data.to_csv(index=False, sep=',').encode('utf-8')
    file_client.append_data(data=csv_content, offset=0, length=len(csv_content))
    file_client.flush_data(len(csv_content))

    print(f"文件 {target_id}.csv 已成功上传至ADLS路径: {adls_file_path}")

4. 配置函数应用环境变量

在Azure门户的函数应用→配置→应用设置中添加以下变量:

  • STORAGE_ACCOUNT_NAME:你的Data Lake Gen2存储账户名称
  • CONTAINER_NAME:目标容器名称
  • 可选:TARGET_ID:若需动态调整ID值,可将代码中的target_id改为读取该变量

关键注意事项

  • 必须由管理员完成托管标识的权限分配,否则会出现访问拒绝错误
  • Timer触发器的CRON表达式可根据需求调整,例如每月15号凌晨3点执行:0 0 3 15 * *

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:52:49