ARM TTK apiVersions测试失败 无新版Logic工作流API可选
ARM模板API版本过旧校验失败解决方案
这个报错来自ARM模板静态校验工具(最常见的是官方arm-ttk,也就是Azure Resource Manager模板测试工具包)内置的apiVersions-Should-Be-Recent规则,默认要求所有资源使用的API版本发布时间不超过730天,或是当前最新GA版本。
优先方案:更新到符合时效要求的API版本
编辑器里看不到新版本,基本都是本地编辑器的ARM schema缓存过期导致的,并非真的没有可用新版本:
- Microsoft.Logic/workflows资源目前有多个符合时效要求的GA稳定API版本可用,包括
2019-05-01、2021-03-01、2022-09-01、2023-01-01,直接把模板里"apiVersion": "2017-07-01"替换成上述任意一个稳定版本即可。 - 注意模板里
properties.definition.$schema字段的2016-06-01值不需要修改,这个是逻辑应用工作流内部定义的DSL schema,和外层ARM资源的apiVersion是完全独立的两个配置,改动这个值反而会导致工作流部署失败。 - 替换后可以本地执行校验命令验证:
Test-AzTemplate -TemplatePath ./logicApp.template.json,确认规则不再报错。
特殊场景:对应资源最新API版本确实超2年的处理方式
极个别Azure资源类型会出现长期不更新GA API版本、最新版发布时间也超过730天的情况,这种时候不要全局关闭校验规则,做定向豁免即可:
- 在模板文件同级目录新建
arm-ttk.testconfig.json配置文件,写入如下内容,单独给指定资源的指定版本开白名单:
{ "apiVersions-Should-Be-Recent": { "allowedVersions": { "Microsoft.Logic/workflows": ["2017-07-01"] } } }
这个配置不会关闭其他资源的API版本校验,仅对Microsoft.Logic/workflows资源的2017-07-01版本放行,不会引入额外风险。
2. 如果你在CI/CD流水线里用的是Azure DevOps内置ARM校验任务、或者GitHub Marketplace的ARM校验Action,不需要修改任务参数,只要把这个配置文件放到校验任务的工作目录下,工具会自动读取配置生效。
3. 不建议为了过校验随便使用未正式GA的preview版本API,这类版本没有服务SLA,后续可能出现不兼容变更,会给生产环境埋隐患。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

