使用Terraform从私有模板创建github_repository报404错误如何解决
问题原因与修复方案
这是Terraform GitHub Provider ~>4.18.0 版本的已知bug,并非你配置遗漏导致。
根因说明
该版本的GitHub Provider在调用/repos/{owner}/{repo}/generate 模板生成接口时,没有复用全局配置的OAuth令牌认证逻辑,导致针对私有模板的请求头未携带Authorization字段。GitHub对未授权访问的私有资源会统一返回404状态码(避免泄露私有资源的存在性),和你观察到的报错现象完全吻合。
你已经验证令牌本身具备repo权限、手动携带令牌调用接口成功、普通仓库创建功能正常,已经完全排除了令牌权限、provider基础配置错误的可能性。
解决办法
- 方案1(推荐):升级GitHub Provider版本
这个认证头缺失的bug已经在v4.22.0及后续版本修复,你只需要修改provider的版本约束即可:
执行terraform { required_providers { github = { source = "integrations/github" version = "~> 4.22.0" } } }terraform init -upgrade完成provider升级后,重新执行terraform apply即可正常创建基于私有模板的仓库。 - 方案2(临时兼容方案):如果当前环境暂时无法升级provider版本,可以通过
local-execprovisioner调用GitHub CLI或者curl命令完成模板仓库创建,规避当前版本的bug。
内容的提问来源于stack exchange,提问作者JSON Brody
相关产品推荐
相关产品推荐

