如何让数百个Azure Functions通过通用域名自动路由访问?
解决方案:批量Azure Functions自定义子域名路由
针对你需要动态启停数百个Azure Functions并自动映射到对应子域名的场景,直接通过Azure Functions原生配置无法实现仅用根域记录完成自动路由,但可以通过以下几种可扩展的方案解决:
方案1:Azure Front Door(推荐,低成本高扩展性)
这是最适合大规模场景的方案,只需一次DNS配置即可支持所有子域名:
- DNS配置:在你的域名服务商处添加两条记录:
- 通配符A记录:
*.my.domain指向Azure Front Door的前端IP地址 - 验证TXT记录:根据Front Door自定义域名验证要求添加(只需针对
*.my.domain配置一次)
- 通配符A记录:
- Front Door路由配置:
- 将所有Azure Functions的默认域名(如
a.azurewebsites.net、b.azurewebsites.net)添加为Front Door的后端池成员 - 创建路由规则,设置主机名匹配条件为
{functionName}.my.domain,将请求转发到对应名称的后端(即{functionName}.azurewebsites.net) - 若需要动态新增/删除函数,可通过PowerShell、Azure CLI或ARM模板自动化完成后端池和路由规则的更新,配合函数的启停事件触发脚本即可实现全自动化
- 将所有Azure Functions的默认域名(如
方案2:Azure API Management(APIM)
适合需要统一API管理、认证限流的场景:
- DNS配置:同样添加通配符A/TXT记录指向APIM的网关IP,完成自定义域名
*.my.domain的绑定 - APIM路由配置:
- 将每个Azure Functions导入为APIM中的API,保持API名称与函数名一致(如
a对应函数a) - 配置APIM的路由策略,提取请求主机名的前缀(如从
a.my.domain中提取a),将请求转发到对应名称的API(即对应Azure Function) - 利用APIM的自动化工具(如Terraform、Azure CLI),在函数创建时自动导入API并完成路由映射,实现动态管理
- 将每个Azure Functions导入为APIM中的API,保持API名称与函数名一致(如
方案3:Azure Functions 高级计划 + 应用服务环境(ASE)
适合需要完全私有环境、自定义网络的场景(成本较高):
- 在ASE中配置通配符自定义域名
*.my.domain,完成DNS绑定 - 利用应用服务的URL重写模块,编写规则提取子域名前缀,将请求转发到对应名称的Azure Function
- 此方案需要在ASE层面统一管理,函数启停时无需额外DNS操作,只需确保函数名与子域名前缀一致
关键说明
Azure Functions原生不支持仅通过根域的A/TXT记录实现自动子域名路由,必须借助前端网关(Front Door/APIM)或ASE来实现通配符域名的统一处理,避免为每个函数单独配置DNS记录和自定义域名绑定。
内容的提问来源于stack exchange,提问作者Maciej
相关产品推荐
相关产品推荐

