Azure函数应用配置与local.settings.json不一致问题咨询
本地配置与Azure函数应用部署后配置不一致的原因分析
问题场景
本地local.settings.json配置如下:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "node", "WEBSITE_RUN_FROM_PACKAGE": 1, "SCM_DO_BUILD_DURING_DEPLOYMENT": true } }
执行以下部署命令后,函数已成功部署至Azure函数应用:
$ npm run-script build && zip -r azure_function.zip . && az functionapp deployment source config-zip -g acmeapp -n acmefunction2 --src azure_function.zip
部署返回结果显示成功:
{ "active": true, "author": "N/A", "author_email": "N/A", "complete": true, "deployer": "Push-Deployer", "end_time": "2023-08-08T16:22:50.8690074Z", "id": "3cba98a7-a231-45b8-847a-f0222e38731c", "is_readonly": true, "is_temp": false, "last_success_end_time": "2023-08-08T16:22:50.8690074Z", "log_url": "https://acmefunction2.scm.azurewebsites.net/api/deployments/latest/log", "message": "Created via a push deployment", "progress": "", "received_time": "2023-08-08T16:21:36.1656327Z", "site_name": "acmefunction2", "start_time": "2023-08-08T16:21:38.0518534Z", "status": 4, "status_text": "", "url": "https://acmefunction2.scm.azurewebsites.net/api/deployments/latest" }
但在Azure函数应用的「Settings | Configuration | Application settings」中,出现配置不一致:
FUNCTIONS_WORKER_RUNTIME值为"node",符合预期;WEBSITE_RUN_FROM_PACKAGE值为0,而非本地配置的1;SCM_DO_BUILD_DURING_DEPLOYMENT值为false,而非本地配置的true。
原因分析
- local.settings.json的作用限制:这个文件仅用于本地开发环境的配置,部署到Azure时,只有少数核心函数配置(如
FUNCTIONS_WORKER_RUNTIME)会被自动同步。WEBSITE_RUN_FROM_PACKAGE和SCM_DO_BUILD_DURING_DEPLOYMENT属于Azure App Service层面的站点配置,默认不会通过local.settings.json同步到云端。 - Zip部署的默认行为:你使用的
az functionapp deployment source config-zip命令有默认配置逻辑:WEBSITE_RUN_FROM_PACKAGE设为0,是因为该部署方式默认会将压缩包解压到站点目录后运行,而非直接从包加载(设为1是直接从包运行的模式);SCM_DO_BUILD_DURING_DEPLOYMENT设为false,是因为你在本地已经执行了npm run-script build完成构建流程,部署时云端不会再触发额外的构建,因此这个开关会被自动置为false。
- 云端配置优先级更高:Azure函数应用的配置优先级是云端直接配置 > 本地配置文件同步。部署过程中,云端的自动配置逻辑会覆盖本地设置,甚至不会读取这些非核心配置项。
内容的提问来源于stack exchange,提问作者Kid_Learning_C
相关产品推荐
相关产品推荐

