amazon-web-services - Terraform,无法使用多值路径模式规则创建 ALB 规则
问题描述
如屏幕截图所示,AWS ALB 规则允许路径规则上有多个匹配条件:
我怎样才能在 Terraform 中完成同样的事情?
当我尝试在 Terraform 中创建此条件时:
resource "aws_lb_listener_rule" "test" {
listener_arn = "<<arn_scrubbed>>"
priority = 25
action {
type = "forward"
target_group_arn = "${aws_lb_target_group.mytarget.arn}"
}
condition {
field = "path-pattern"
values = ["/account.php", "/client*"]
}
condition {
field = "host-header"
values = ["dev01site.example.com"]
}
}
Terraform 将抛出错误:attribute supports 1 item maximum, config has 2 declared
如果这样尝试:
resource "aws_lb_listener_rule" "test" {
listener_arn = "<<arn_scrubbed>>"
priority = 25
action {
type = "forward"
target_group_arn = "${aws_lb_target_group.mytarget.arn}"
}
condition {
field = "path-pattern"
values = ["/account.php"]
}
condition {
field = "path-pattern"
values = ["/client*"]
}
condition {
field = "host-header"
values = ["dev01site.example.com"]
}
}
在这种情况下,它抛出A rule can only have one 'path-pattern' condition
是否无法执行(使用 Terraform)AWS 控制台允许的这些操作,还是我的语法有误?
注意:如果您想知道 - 由于每个 ALB 有 100 条规则限制,我想合并规则。尝试使用主机/路径组合规则将 1 ALB 用于多个开发环境,让我的钱物有所值。每个都需要多个路径规则来进行服务路由。这就是为什么我要为每个规则合并多个路径。如果我不必为每条路径制定一条规则,这将为我的公司每月节省几百美元。
解决方案
对于主机头值的多个值,我也遇到了类似的问题。
下面的链接帮助我解决了这个问题。
https://github.com/terraform-providers/terraform-provider-aws/issues/12034
损坏的配置:
condition {
field = "host-header"
values = var.host_names
}
应该做什么:
condition {
host_header {
values = var.host_names
}
}
并在变量文件中声明 host_names 变量,类型为 list(string)
variable "host_names"{ type = list(string) default = ["abc.com", "xyz.com"] }
推荐阅读
- micropython - 易于上手的教程/指南的提示
- python - 日期时间仍然显示时间组件
- delphi - 用 ZLIB 压缩到字节数组?
- postgresql - 表名大写时nlog没有插入数据库
- c# - 如何同时使用两个脚本航点和传送以及如何使传送更好地工作?
- android - 如何将flutter中的位置变化发送到后端
- android - 自定义对话框(源自 QDialog)不会关闭(Android)
- oracle - Oracle 中所有视图中具有条件的行数
- typescript - Typescript TS2532 - 对象可能未定义
- ios - 如何在 AppDelegate 中调用 segue?