Terraform安装Azure/Azapi Provider失败,报403或超时错误求解决
问题描述
尝试在Terraform项目中用Azure/Azapi Provider创建Key Vault密钥轮换策略,添加该Provider后执行terraform init,交替出现以下两种错误:
错误1
│ Error: Failed to install provider │ │ Error while installing azure/azapi v0.1.0: could not query provider registry for registry.terraform.io/azure/azapi: failed to │ retrieve authentication checksums for provider: 403 Forbidden
错误2
│ Error: Failed to install provider │ │ Error while installing azure/azapi v0.1.0: could not query provider registry for registry.terraform.io/azure/azapi: failed to │ retrieve authentication checksums for provider: the request failed after 2 attempts, please try again later: Get │ "https://github.com/Azure/terraform-provider-azapi/releases/download/v0.1.0/terraform-provider-azapi_0.1.0_SHA256SUMS": net/http: │ request canceled (Client.Timeout exceeded while awaiting headers)
当前配置文件
providers.tf
provider "azurerm" { features {} } provider "azuread" { } provider "azapi" { }
versions.tf
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 2.7.0" } azuread = { source = "hashicorp/azuread" version = "2.29.0" } azapi = { source = "azure/azapi" version = "=0.1.0" } } }
注:azurerm、azuread Provider可正常安装,仅azapi Provider安装失败。
原因分析
- Provider源与版本过时:azapi Provider的官方托管源已从
azure/azapi迁移到hashicorp/azapi;v0.1.0是早期版本,可能已被注册表移除,对应的校验文件也无法正常访问。 - 网络访问受限:403和超时错误说明你的环境无法正常访问Terraform注册表或GitHub的release资源,可能是代理配置不当、防火墙拦截或地域网络限制导致。
解决方法
修正Provider源与版本
更新versions.tf中的azapi配置,使用官方最新源和稳定版本:
terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 2.7.0" } azuread = { source = "hashicorp/azuread" version = "2.29.0" } azapi = { source = "hashicorp/azapi" # 替换为官方正确源 version = ">= 1.0.0" # 使用稳定新版本,避免旧版本兼容性问题 } } }
执行terraform init -upgrade重新初始化,拉取正确的Provider包。
排查并修复网络问题
- 测试本地网络是否能访问
registry.terraform.io和github.com,可通过ping registry.terraform.io或curl https://github.com/Azure/terraform-provider-azapi验证。 - 若使用代理,配置Terraform兼容的代理环境变量:
配置完成后再运行export HTTP_PROXY=http://你的代理地址:端口 export HTTPS_PROXY=http://你的代理地址:端口 export NO_PROXY=localhost,127.0.0.1terraform init。 - 企业内网环境下,确认防火墙是否放行Terraform注册表及GitHub相关域名的访问。
内容的提问来源于stack exchange,提问作者Cloud_Engineer
相关产品推荐
相关产品推荐

