我有一个Terraform配置,它在应用阶段从aws_api_gateway_usage_plan
资源使用计算值来创建local_file
资源。
resource "aws_api_gateway_usage_plan" "api_plan" {
name = var.usage_plan_name
api_stages {
api_id = jsondecode(file("dev.json")).resources[1].rest_api_id
stage = "api"
}
# Have to wait for the API to be created before we can create the usage plan
depends_on = [local_file.chalice_config]
}
如您所见,我阅读了dev.json
,以确定api_id
Terraform的需求。问题是,当我运行terraform apply
时,描述为here的新安全检查会注意到api_id
评估为的先前值已更改!
Provider produced inconsistent final plan: When expanding the plan for aws_api_gateway_usage_plan.api_plan
to include new values learned so far during apply, provider "aws" produced an invalid new value
for .api_stages[0].api_id: was cty.StringVal("****"), but now cty.StringVal("****").
如该文档所述,解决此错误的正确方法是指定在plan
阶段,此api_id
实际上尚未为computed
。问题是我不确定如何通过Terraform配置进行操作-我参考的文档是针对实际Terraform提供程序的作者的。]
查看GitHub上的问题,将初始值设置为null
似乎不是这样做的合理方法。
有什么想法吗?我正在考虑降级到Terraform 0.11来解决此新的安全检查,但我希望在0.12中可以做到这一点。
提前感谢!
我有一个Terraform配置,该配置创建一个aws_api_gateway_usage_plan资源,并在应用阶段从local_file资源使用计算值。资源“ aws_api_gateway_usage_plan”“ ...
[好吧,想了一会儿之后,我想到了一个愚蠢的解决方法,使我能够“欺骗” Terraform,使其认为api_id
的值将在apply
阶段进行计算,从而无视安全检查。