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

跨存储账户复制Blob存储目录的Python SDK方案及Azure服务咨询

答复内容

1 Python Azure Blob SDK实现方案

  • 完全可以实现同等功能,不需要自行实现串行逐个blob复制的逻辑
  • 核心依赖Azure Blob存储的服务端复制能力:复制操作全程由Azure存储后台执行,不会占用你的服务带宽资源,客户端仅需提交任务即可
  • 实现逻辑:
    • 安装v12及以上版本的azure-storage-blobPython SDK,推荐使用异步接口提升提交效率
    • 调用源容器客户端的list_blobs(name_starts_with="待复制目录前缀/")接口拉取blob列表,该接口为轻量分页查询,性能开销极低
    • 批量提交目标blob的start_copy_from_url任务,传入带SAS令牌的源blob地址即可,所有任务提交后由服务端异步执行,可按需监听复制完成状态
  • 核心代码示例:
from azure.storage.blob.aio import ContainerClient

async def copy_dir(src_container_sas: str, src_dir: str, dest_container_url: str):
    async with ContainerClient.from_container_url(src_container_sas) as src_client:
        async with ContainerClient.from_container_url(dest_container_url) as dest_client:
            async for blob in src_client.list_blobs(name_starts_with=f"{src_dir.rstrip('/')}/"):
                src_blob_url = f"{src_container_sas.rstrip('/')}/{blob.name}"
                dest_blob_client = dest_client.get_blob_client(blob.name)
                # 仅提交复制任务,无需等待执行完成
                await dest_blob_client.start_copy_from_url(src_blob_url)

2 支持API触发的Azure复制服务

有三款原生支持API触发复制操作的Azure服务可选,无需自行维护整套传输服务的运行资源:

  • Azure Functions:无服务计算产品,你可以开发一个HTTP触发的函数,接收传入的源SAS URL和目录参数后自动执行复制逻辑,执行完成后支持调用你指定的回调地址推送结果,按需计费资源开销极低
  • Azure Logic Apps:低代码工作流产品,无需编码即可配置HTTP触发端点、Blob目录复制组件、回调通知组件,直接对外暴露API地址即可触发复制流程
  • Azure Data Factory:专业数据集成服务,适合大批量、高频次的传输场景,提前配置好固定目标容器的复制管道后,可通过管道触发API传入源参数启动复制任务,内置进度监控、错误重试、回调通知等全链路能力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:06:04