首页 > 解决方案 > Terraform aws_lb_listener_rule 重定向规则:我可以重写 #{path} 变量吗?

问题描述

我有以下 Terraform 规则,它尝试将格式的 URL 重定向https://engineering.example.com/blog/<path>https://www.example.com/engineering/<path>

resource "aws_lb_listener_rule" "redirect_engineering_blog_urls_to_website" {
  listener_arn = module.web.alb_listener_arn

  action {
    type = "redirect"

    redirect {
      host        = "www.example.com"
      path        = "/engineering/#{path}"
      port        = "443"
      protocol    = "HTTPS"
      status_code = "HTTP_301"
    }
  }

  condition {
    host_header {
      values = ["engineering.example.com"]
    }
  }


  condition {
    path_pattern {
      values = ["/blog/*"]
    }
  }
}

但是,它不起作用。当我导航到https://engineering.example.com/blog/mypost它时,它会重定向到https://www.example.com/engineering/blog/mypost(注意/engineering/blog/它应该是什么时候/engineering/)。

有没有办法告诉 terraform${path}只替换*通配符捕获["/blog/*"]

标签: terraformterraform-provider-aws

解决方案


据我所知,要基于匹配进行全路径重写(如上面的示例),您需要为此使用适当的引擎或其他技术,例如 nginx、haproxy,或者,如果您在 AWS ,为此在 API 网关后面有一个小 lambda - 不幸的是,ALB 不支持基于模式的路径提取。


推荐阅读