修改合法cron表达式触发Azure Functions存储账户信息无效错误
根因定位
- Azure Function的Timer Trigger存在两种运行逻辑,不同触发间隔的配置会触发不同的依赖校验:
- 触发间隔<1分钟的高频Cron(如你配置的
*/30 * * * * *),运行时默认使用内存内计时器实现调度,不需要依赖存储服务做分布式锁,因此不需要校验存储账户配置,所以运行正常 - 触发间隔≥1分钟、或指定固定触发时点的Cron(如你配置的
0 */5 * * * *),运行时会自动启用分布式租约机制,需要调用AzureWebJobsStorage配置对应的存储账户的Blob服务存储调度状态、做实例并发控制,此时如果AzureWebJobsStorage配置缺失或无效,就会抛出存储账户信息无效的报错
- 触发间隔<1分钟的高频Cron(如你配置的
修复方案
- 打开项目根目录下的
local.settings.json配置文件 - 在
Values节点中添加AzureWebJobsStorage配置项,本地开发可以直接使用本地存储模拟器:
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", // 保留原有其他配置项不变 } }
- 重启Azure Function本地运行进程即可,5分钟间隔的触发规则会正常生效
补充说明
- 该配置不依赖你登录Azure账号,
UseDevelopmentStorage=true只会调用本地的Azure Storage Emulator服务,和你隔离企业账户的需求不冲突 - 之前使用Cosmos DB Emulator运行秒级任务正常,是因为秒级调度逻辑完全不调用存储相关接口,因此不会触发存储配置校验,和Cosmos DB组件本身无关
内容的提问来源于stack exchange,提问作者Reece McMillin
相关产品推荐
相关产品推荐

