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

Azure DevOps YAML流水线用Terraform创建应用注册报错

错误含义说明

该报错是HashiCorp AzureAD Provider v2.0.x版本分支的已知序列化缺陷:创建Azure AD应用时,provider默认会将当前执行身份设置为应用所有者,若拉取当前身份的目录对象信息时接口返回的ODataId字段为空,就会触发JSON序列化校验失败,导致应用创建请求无法正常发出。

解决思路
  • 升级AzureAD Provider版本(首选方案)
    将代码中required_providers块内的azuread版本约束从~> 2.0.0调整为~> 2.15.0及以上的稳定版本,该bug已在后续补丁版本中被官方修复。修改后重新执行terraform init拉取新版本provider即可正常运行。
    示例修改后的provider约束:
azuread = {
  source  = "hashicorp/azuread"
  version = "~> 2.15.0"
}
  • 手动指定应用所有者(适配无法升级provider的场景)
    如果受环境约束暂时无法升级azuread provider版本,可以在azuread_application资源块内显式指定owners参数,取值为你代码中已经拉取的当前客户端配置的对象ID,修改后的资源块示例:
resource "azuread_application" "example" {
  display_name = "Example-app"
  owners       = [data.azuread_client_config.current.object_id]
}
  • 排查Azure DevOps服务连接权限
    确认流水线使用的Azure服务连接对应的服务主体,拥有Azure AD的应用创建权限、目录读取权限,避免因权限不足导致拉取当前身份的对象ID为空的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:06:02