Terraform替换功能在条件中不起作用

问题描述 投票:0回答:1

我有一个代码,用于检查循环中的键是否包含单词Ops,如果是,则将值分配给提供程序aws.peer或aws.default。

provider = "${replace(each.key, "Ops", "") != each.key ? "aws.peer" : "aws.default"}"

运行后返回:

错误:提供者参考无效

在../../modules/Stack/Peering/main.tf第13行:Provider参数需要一个提供程序名称,后跟可选的别名,例如“ aws.foo”。

不确定原因

terraform
1个回答
0
投票

提供者选择在Terraform中不允许动态。如果您共享更多脚本,我们也许可以为您提供一种针对您要构建的解决方案的解决方法。

提供商选择不能像这样动态。尽管它不会在Terraform 0.11中产生错误,但也无法正常工作:Terraform 0.11只是忽略了该错误,并将其视为文字字符串,就如terraform 0.12upgrade工具所示。 Terraform 0.12对其进行了明确的验证检查,以为您提供不受支持的更好反馈。

资源与其提供者之间的连接为时过早,以至于Terraform不能在该上下文中评估表达式,因为必须知道提供者才能理解该块的其他内容。

带有可能的解决方法的资源:https://discuss.hashicorp.com/t/defining-provider-aliases-with-string-interpolation-not-working-in-terraform-0-12/1569/4

© www.soinside.com 2019 - 2024. All rights reserved.