使用Terragrunt+Terraform Cloudflare Provider认证失败求助
Cloudflare Terraform + Terragrunt认证错误解决
问题详情
我在通过Terragrunt配合Terraform对接Cloudflare账户时遭遇认证错误,配置代码如下:
locals { cloudflare_api_token = get_env("CLOUDFLARE_API_TOKEN") cloudflare_email = get_env("CLOUDFLARE_EMAIL") } terraform { source = "my source dir" } generate "versions" { path = "versions.tf" if_exists = "overwrite_terragrunt" contents = <<EOF terraform { required_providers { cloudflare = { source = "cloudflare/cloudflare" version = "~> 3.0" } } } EOF } generate "provider" { path = "provider.tf" if_exists = "overwrite_terragrunt" contents = <<EOF provider "cloudflare" { email = "${local.cloudflare_email}" api_token = "${local.cloudflare_api_token}" } EOF }
收到的报错信息:
"email": all of `api_key,email` must be specified
我的疑问:使用api_token时应该无需搭配已弃用的api_key,且Terragrunt生成的配置看起来正确,该如何完成认证?
解决方法
删除provider配置中的email字段:Cloudflare Provider的认证逻辑中,若提供
email参数,会触发旧版api_key+email的认证校验规则,而你只填了email没填api_key才导致报错。使用api_token认证时,只需要保留api_token参数即可,修改后的provider配置如下:provider "cloudflare" { api_token = "${local.cloudflare_api_token}" }确认环境变量有效性:检查
CLOUDFLARE_API_TOKEN环境变量是否已正确设置,且该token拥有你要操作的Cloudflare资源的对应权限。版本兼容性验证:你使用的
~>3.0版本Cloudflare Provider完全支持api_token认证,无需依赖弃用的api_key,版本本身不存在问题,只需调整配置即可。
内容的提问来源于stack exchange,提问作者Murakami
相关产品推荐
相关产品推荐

