AWS hat Unterstützung für ELB-Umleitungen hinzugefügt, was sehr nützlich ist, um eine sofort einsatzbereite Erfahrung für HTTP-zu-HTTPS-Umleitungen zu machen, ohne eine EC2-Instance mit einem dort lauschenden HTTP-Server zu verwenden.
Es wäre cool, wenn Sie die Unterstützung für diese Funktion hinzufügen könnten.
resource "aws_lb_listener_rule" "static" {
listener_arn = "${aws_lb_listener.front_end.arn}"
priority = 100
action {
type = "redirect" # "fixed-response"
# the rest has to be concepted
}
}
Offizielle Ankündigung: https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load -Balancer/
Dokumentation:
Ich bin daran interessiert, an dieser Funktion zu arbeiten.
Die Ressource aws_lb_listener
wäre ebenfalls betroffen.
Was die mögliche Terraform-Konfiguration betrifft, schlage ich Folgendes vor:
resource "aws_lb_listener" "web_port80" {
load_balancer_arn = "${aws_lb.web_alb.arn}"
port = 80
protocol = "HTTP"
default_action {
type = "redirect"
host = "#{host}"
path = "/#{path}"
port = "#{port}"
protocol = "#{protocol}"
query = "#{query}"
status_code = "301"
}
}
resource "aws_lb_listener" "web_port80" {
load_balancer_arn = "${aws_lb.web_alb.arn}"
port = 80
protocol = "HTTP"
default_action {
type = "fixed-response"
content_type = "text/plain"
message_body = "Hello"
status_code = "200"
}
}
Die Konfiguration für aws_lb_listener_rule
wäre ähnlich.
Achtung: Das Festlegen dieser Art von Regeln außerhalb von Terraform führt zum Absturz des AWS-Anbieters in allen Versionen bis zur neuesten (Version 1.29.0 zum Zeitpunkt dieses Schreibens): #5357
Ich werde heute eine Pull-Anfrage einreichen, um diese Art von Absturz über alle ALB/NLB-Ressourcen hinweg zu verhindern, und wir sollten wahrscheinlich auf diese Korrekturen warten, bevor wir diese Funktion hinzufügen.
Absturzverhinderungs-Pull-Anforderung gesendet: #5367
Der Crash-Fix wurde mit dem Master zusammengeführt, daher sollte es in Ordnung sein, mit dem Code dafür zusätzlich zu diesen Änderungen zu arbeiten. 👍
Wir haben jetzt 3 verschiedene Arten von Aktionen: "Fixed-Response", "Forward" und "Redirect", jede mit unterschiedlichen Parametersätzen.
Wäre es besser, wenn die Aktionskonfiguration für den ausgewählten Aktionstyp in einem Block gruppiert wird, anstatt sie auf der obersten Ebene zu glätten?
Beispiele:
resource "aws_lb_listener_rule" "static" {
action {
type = "forward"
forward {
target_group_arn = "..."
}
}
}
resource "aws_lb_listener_rule" "static" {
action {
type = "fixed-response"
fixed_response {
content_type = "text/plain"
message_body = "Hello"
status_code = "200"
}
}
}
resource "aws_lb_listener_rule" "static" {
action {
type = "redirect"
redirect {
host = "#{host}"
path = "/#{path}"
port = "#{port}"
protocol = "#{protocol}"
query = "#{query}"
status_code = "HTTP_301"
}
}
}
Der Aktionsdatentyp gruppiert jetzt aktionstypspezifische Konfigurationen in einem verschachtelten Objekt, sodass eine (fast) 1:1-Zuordnung wäre, wenn Sie dies tun würden: https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Action .html
Außerdem ist mir aufgefallen, dass status_code
für die Umleitungsaktion HTTP_
vorangestellt ist, während dies für die Aktion mit fester Antwort nicht der Fall ist:
Wenn diese status_code
-Konfiguration geteilt werden soll, müssen wir je nach Aktionstyp eine Art Validierung durchführen oder eine Art Wertübersetzung im Terraform-Anbieter durchführen.
Wir empfehlen, in den meisten Fällen der SDK-Struktur zu folgen, daher wären separate Blöcke in diesem Fall angemessen. Dadurch können wir die Argumentvalidierung einfach hinzufügen und den Code einfacher halten.
Da der Umfang davon fixed-response
umfasst, können wir den Titel aktualisieren? Das interessierte mich besonders und ich brauchte ein bisschen, um dieses Problem zu finden, und sah, dass daran bereits gearbeitet wurde. Vielen Dank.
Außerdem habe ich nichts über das Hinzufügen von Headern in den obigen API-Links gesehen, daher ist nicht klar, wie ich so etwas wie einen HSTS
-Header in einer Antwort festlegen würde - da die ALB im Vorwärtsmodus dies dem Hintergrund überlässt App.
Gibt es Pläne, auch Authentifizierung hinzuzufügen?
@sklemmer- Funktionsanfragen zur Authentifizierung finden Sie unter #4707 und #4711 😄
Ich hoffe, den offenen Pull-Request für fixed-response
/ redirect
(#5430) irgendwann in dieser Woche überprüfen zu können.
Die Unterstützung für fixed-response
- und redirect
-Aktionen wurde über #5430 in Master integriert und wird später in dieser Woche mit Version 1.33.0 des AWS-Anbieters veröffentlicht. 🚀
Diese wurde in Version 1.33.0 des AWS-Anbieters freigegeben. Bitte lesen Sie die Terraform-Dokumentation zur Anbieterversionierung oder kontaktieren Sie uns, wenn Sie Hilfe beim Upgrade benötigen.
Ich werde dieses Problem sperren, da es seit _30 Tagen_ ⏳ geschlossen ist. Dies hilft unseren Betreuern, die aktiven Probleme zu finden und sich darauf zu konzentrieren.
Wenn Sie der Meinung sind, dass dieses Problem erneut geöffnet werden sollte, empfehlen wir Ihnen, ein neues Problem zu erstellen, das für zusätzlichen Kontext auf dieses zurückverlinkt. Danke!
Hilfreichster Kommentar
Die Unterstützung für
fixed-response
- undredirect
-Aktionen wurde über #5430 in Master integriert und wird später in dieser Woche mit Version 1.33.0 des AWS-Anbieters veröffentlicht. 🚀