Terraform Cloud API触发Run时自定义变量不生效求助
解决Terraform Cloud API触发Run时自定义变量不生效的问题
- 核心问题:未按JSON:API规范正确传递变量参数
Terraform Cloud的REST API遵循JSON:API格式,不是普通的键值对传参。要临时覆盖工作空间预设变量,必须在请求体的data.attributes.variables数组里定义变量,还要指定正确的category(区分Terraform变量和环境变量)。
举个正确的请求体示例:
{ "data": { "attributes": { "message": "用临时变量触发Run", "variables": [ { "key": "instance_count", "value": "2", "category": "terraform", "hcl": false } ] }, "type": "runs" } }
- 关键注意事项
- 匹配变量类型:var.tf中定义的Terraform变量,
category必须设为terraform;环境变量(如云服务商密钥)则设为env,错设类型会导致变量被忽略。 - 请求头必须包含
Content-Type: application/vnd.api+json,同时携带有效的Bearer授权令牌,否则API会不识别你的变量参数。 - 变量优先级:API传入的临时变量优先级高于工作空间预设变量,但敏感变量需要在对象中添加
"sensitive": true标识才会生效。
- 官方文档参考
Terraform Cloud官方文档的「Create a Run」章节详细说明了variables参数的结构要求;「Variable Priorities」章节明确了临时变量、工作空间变量、变量集之间的优先级规则。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

