You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible azure_rm_resource_info查询Data Factory报找不到API版本错误

报错原因

这个报错的核心是azure.azcollection.azure_rm_resource_info模块的参数解析逻辑和原生Azure REST API的传参规则不匹配:

  • 原生Azure REST API要求api-version作为URL查询参数传递,直接调用时可以正常返回结果
  • 但该Ansible模块不会解析url参数里的查询字符串,把?api-version=2018-06-01拼在资源路径后面时,模块会将Microsoft.DataFactory/factories?api-version=2018-06-01整体识别为目标资源类型,在内置的资源类型与API版本映射表中无法找到匹配项,最终抛出对应错误。
修复方案

调整模块参数配置,遵循模块的参数传参规则:

  • 移除url参数末尾拼接的?api-version=2018-06-01查询字符串
  • 新增独立的api_version模块参数,显式指定要使用的API版本为2018-06-01

修正后的任务配置如下:

- name: Check if Data Factory ({{ az_datafactory_name }}) already exists
  azure.azcollection.azure_rm_resource_info:
    auth_source: auto
    client_id: "{{ az_client_id }}"
    secret: "{{ az_secret }}"
    tenant: "{{ az_tenant_id }}"
    subscription_id: "{{ az_subscription_id }}"
    url: "https://management.azure.com/subscriptions/{{ az_subscription_id }}/resourceGroups/{{ az_resource_group_name }}/providers/Microsoft.DataFactory/factories"
    api_version: "2018-06-01"
  register: az_datafactory

如果要避免手动拼接完整URL出错,也可以使用模块提供的结构化资源参数替代完整URL传参,写法更简洁:

- name: Check if Data Factory ({{ az_datafactory_name }}) already exists
  azure.azcollection.azure_rm_resource_info:
    auth_source: auto
    client_id: "{{ az_client_id }}"
    secret: "{{ az_secret }}"
    tenant: "{{ az_tenant_id }}"
    subscription_id: "{{ az_subscription_id }}"
    resource_group: "{{ az_resource_group_name }}"
    resource_type: "Microsoft.DataFactory/factories"
    api_version: "2018-06-01"
  register: az_datafactory

注意:如果需要查询指定名称的单个Data Factory资源而非资源组下所有Data Factory,只需要额外增加resource_name: "{{ az_datafactory_name }}"参数即可,无需手动拼接完整资源URL。

内容的提问来源于stack exchange,提问作者Rustan Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:09:20