【发布时间】:2021-02-23 11:29:41
【问题描述】:
我们有一个豆茎
resource "aws_elastic_beanstalk_environment"
我们需要 HTTP 监听器重定向到 HTTPS 现在通常您只需像这样创建一个负载均衡器侦听器规则(如此处的答案所示)
resource "aws_lb_listener_rule" "redirect_http_to_https" {
listener_arn = XXX
action {
type = "redirect"
redirect {
port = "443"
protocol = "HTTPS"
host = "#{host}"
path = "/#{path}"
query = "#{query}"
status_code = "HTTP_301"
}
}
condition {}
}
但是,由于某些原因,我们必须使用内置的 beanstalk 负载均衡器,而不是创建我们自己的负载均衡器资源,并且正如您在上面看到的,我看不到可以针对 beanstalks-loadbalancers-listener。 相反,我试图操纵设置选项来像这样配置负载均衡器
setting {
namespace = "aws:elbv2:listener:default"
name = "Rules"
value = "redirect"
}
setting {
namespace = "aws:elbv2:listenerrule:redirect"
name = "Process"
value = "443"
}
setting {
namespace = "aws:elbv2:listenerrule:redirect"
name = "Priority"
value = "1"
}
setting {
namespace = "aws:elbv2:listener:443"
name = "Protocol"
value = "HTTPS"
}
但没有一个生效。以前有人这样做过吗?如果不是,我们将不得不在服务器上进行重定向,可能在代码中。
这在 UI 中当然很简单,花了我不到 2 分钟的时间,但在 terraform 中却很困难
【问题讨论】:
-
如果您已经成功地在控制台中完成了它并且它有效,那么通常的方法是运行计划并查看 Terraform 想要撤消的内容。然后将这些更改放回 Terraform,计划应该是空的。由于某种原因,这对您不起作用吗?
-
我已经做过了,不完全是。我的重定向响应是由 ec2 实例中的 nginx 做出的,使用 ebextension 文件创建。我将使用响应为您提供 ebextension 文件的代码。请不要对我的回答投反对票,这是因为我在这里无法发送格式化代码。
标签: amazon-web-services terraform amazon-elastic-beanstalk amazon-elb