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

Azure Functions 使用API连接对接SharePoint、Outlook、SQL Server方案咨询

Azure Functions Python 对接 SharePoint、Outlook、SQL Server 最佳实践
  • 通用前置准备:
    • 优先选择 Python 3.9/3.10/3.11 作为 Function App 运行时版本,这三个版本是当前官方支持的稳定版本,兼容消费计划、弹性Premium计划所有功能
    • 所有敏感凭据(租户ID、客户端密钥、SQL连接串等)全部存储在 Function App 的应用程序配置中,禁止硬编码在代码里;本地调试时凭据存入 local.settings.json,该文件默认被加入 .gitignore 不会意外泄露

对接 SharePoint

  • 认证优先使用 MSAL(Microsoft Authentication Library)获取访问令牌,不推荐使用老旧的用户名密码认证方式,同时支持应用权限、委托权限两种场景
  • 接口调用可以直接请求 SharePoint REST API,也可以用第三方封装库 Office365-REST-Python-Client,后者已经封装好了列表操作、文件上传下载等常用逻辑,无需自行拼接请求
  • 权限配置遵循最小原则:仅给指定站点分配需要的读写权限,不要授予整个租户的全量权限;在 Azure AD 注册应用时配置 SharePoint 应用权限后,记得完成管理员同意授权
import os
from office365.sharepoint.client_context import ClientContext

# 从应用配置读取凭据
tenant_id = os.environ["SP_TENANT_ID"]
client_id = os.environ["SP_CLIENT_ID"]
client_secret = os.environ["SP_CLIENT_SECRET"]
site_url = os.environ["SP_SITE_URL"]

# 鉴权初始化上下文
context = ClientContext(site_url).with_client_credentials(client_id, client_secret, tenant_id)
# 操作示例:读取指定列表的所有条目
sp_list = context.web.lists.get_by_title("目标列表名")
items = sp_list.items.get().execute_query()

对接 Outlook

  • 同样用 MSAL 完成鉴权,调用 Microsoft Graph API 操作 Outlook 邮件、日历、联系人等资源
  • 场景适配:如果是操作组织公共邮箱、批量处理邮件,配置应用级的 Mail.ReadWrite、Calendars.ReadWrite 等权限;如果是操作用户个人邮箱,使用委托权限配置对应作用域即可
  • 可以直接使用官方 msgraph-core 库发起请求,无需手动处理鉴权头
import os
from msgraph.core import GraphClient
from azure.identity import ClientSecretCredential

credential = ClientSecretCredential(
    tenant_id=os.environ["AZURE_TENANT_ID"],
    client_id=os.environ["AZURE_CLIENT_ID"],
    client_secret=os.environ["AZURE_CLIENT_SECRET"]
)
graph_client = GraphClient(credential=credential, scopes=["https://graph.microsoft.com/.default"])
# 操作示例:获取指定邮箱最新10封邮件
result = graph_client.get('/users/目标邮箱地址/messages?$top=10')
mails = result.json()

对接 SQL Server

  • 驱动推荐使用官方适配的 pyodbc,性能和兼容性是当前所有Python SQL Server驱动中最好的
  • 连接串存入 Function App 应用配置,SQL Server 侧可以开启防火墙允许Azure服务访问,对安全要求高的场景配置私有端点走内网访问,避免公网暴露端口
  • 操作时注意复用连接,不要每次请求都新建连接,避免出现连接耗尽问题
import os
import pyodbc

conn_str = os.environ["SQL_CONNECTION_STRING"]
# 初始化连接
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
# 操作示例:查询表数据
cursor.execute("SELECT * FROM 目标表名")
rows = cursor.fetchall()
# 操作完成后关闭资源
cursor.close()
conn.close()

部署运行优化建议

  • 本地开发完成后,用 requirements.txt 声明所有依赖库,包括msal、pyodbc、office365-rest-python-client等,部署时Azure会自动安装对应依赖
  • 如果用消费计划,默认执行超时为5分钟,最长可配置为10分钟,超出时长要求的场景换用弹性Premium计划或专用计划
  • 建议按业务拆分独立的Function,比如SharePoint数据同步一个Function、Outlook发邮件一个Function、SQL数据清洗一个Function,方便单独调试和扩缩容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:06:06