生产环境中Azure Function代码存放及ARM模板关联方案咨询
Azure Function生产环境代码存储及ARM关联官方方案
官方推荐的生产级代码存储选项
- Azure DevOps Repos:和你当前使用Azure DevOps做生产迁移的技术栈完全适配,支持私有仓库细粒度权限管控、分支保护、提交审计,可与DevOps流水线原生集成,是企业级生产场景的首选方案
- Azure Blob 存储(私有容器+SAS令牌):适合存放经过构建验证的Function zip部署包,通过时效和权限受限的SAS令牌控制访问,无需额外代码托管服务即可实现部署包的安全托管
- GitHub(公有/私有仓库):适合团队已有GitHub代码托管体系的场景,支持私有仓库权限管控、部署密钥配置,可与Azure服务原生集成
- Azure Artifacts:适合将Function构建产物作为版本化制品存储,支持制品生命周期管理、访问权限隔离,适合多环境部署场景下统一管控不同版本的部署包
ARM模板关联代码的实现方式
生产环境最推荐通过WEBSITE_RUN_FROM_PACKAGE应用配置关联部署包,该方案部署速度快、支持原子更新、回滚方便,ARM模板示例如下:
{ "type": "Microsoft.Web/sites", "apiVersion": "2022-09-01", "name": "[parameters('functionAppName')]", "kind": "functionapp", "location": "[parameters('location')]", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]", "siteConfig": { "appSettings": [ { "name": "WEBSITE_RUN_FROM_PACKAGE", "value": "<部署包的可访问地址,如Blob SAS地址、Azure DevOps制品下载地址等>" }, // 其余必填配置:AzureWebJobsStorage、FUNCTIONS_EXTENSION_VERSION、FUNCTIONS_WORKER_RUNTIME等 ] } } }
如果你的团队已经在使用Azure DevOps,更建议拆分部署流程:ARM模板仅负责部署Function App的基础架构,后续通过DevOps流水线的AzureFunction@1任务单独部署代码,这种方式架构和代码部署权限隔离、支持多环境配置替换、灰度发布等生产级特性,灵活度更高。
生产环境注意事项
- 不要在ARM模板中硬编码敏感信息,比如带SAS令牌的存储地址、私有仓库访问凭据,需将敏感值存放在Azure Key Vault中,ARM模板通过Key Vault动态引用获取
- 优先使用经过构建验证的zip部署包,而非直接关联源代码仓库部署,避免生产环境引入构建过程的不稳定因素,同时便于版本回溯和回滚
- 所有部署流程通过Azure DevOps流水线自动化实现,加入人工卡点、自动化测试环节,符合生产发布的合规管控要求
内容的提问来源于stack exchange,提问作者PriyankaB
相关产品推荐
相关产品推荐

