terraform - Terraform 替换功能在条件下不起作用
问题描述
我有一个代码,它检查循环中的键是否具有单词 Ops,如果是,则将值分配给提供者 aws.peer 或 aws.default。
provider = "${replace(each.key, "Ops", "") != each.key ? "aws.peer" : "aws.default"}"
我运行它后它返回:
Error: Invalid provider reference
On ../../modules/Stack/Peering/main.tf line 13: Provider argument requires a provider name followed by an optional alias, like "aws.foo".
不知道为什么
解决方案
在 Terraform 中,提供者选择不允许是动态的。如果您共享更多脚本,我们可能会为您提供特定于您正在构建的解决方案的解决方法。
提供者选择不能像这样动态。尽管它在 Terraform 0.11 中没有产生错误,但它也不起作用:Terraform 0.11 只是忽略了它并将其视为文字字符串,就像 terraform 0.12upgrade 工具显示的那样。Terraform 0.12 对其进行了明确的验证检查,以便为您提供更好的反馈,表明它不受支持。
资源与其提供者之间的连接发生得太早,Terraform 无法在该上下文中评估表达式,因为必须知道提供者才能理解块的其他内容。
推荐阅读
- javascript - 为什么这个索引签名不能是可选的?
- android - 自定义视图的 Android XML 错误:找不到以下类
- c++ - 对于 `std::less_equal` 和 `std::greater_equal` 谓词,`std::nth_element` 失败
- c++ - sqlite(使用 C++)。从字符串而不是 csv 文件导入?
- azure - 不接收有关用户个人资料更新的通知
- javascript - 识别最新的 api 调用响应并忽略旧的调用响应
- javascript - 将数据从 Javascript 发送到 Servlet 的问题
- c - 编译 clang 时出现 declspec 错误
连同 Windows 标头 - javascript - 对象属性在 Vue 脚本中不起作用但在模板中起作用
- python - 如何将具有熊猫类型的字典转换为可序列化的 json