Terraform-provider-aws: Unterstützung für „redirect“ und „fixed-response“ zum Aktionstyp „lb_listener_rule“ hinzugefügt

Erstellt am 26. Juli 2018  ·  12Kommentare  ·  Quelle: hashicorp/terraform-provider-aws

Gemeinschaftsnotiz

  • Bitte stimmen Sie über dieses Problem ab, indem Sie eine 👍- Reaktion zum ursprünglichen Problem hinzufügen, um der Community und den Betreuern zu helfen, diese Anfrage zu priorisieren
  • Bitte hinterlassen Sie keine „+1“- oder „Ich auch“-Kommentare, da diese zusätzlichen Lärm für die Follower des Problems erzeugen und nicht dazu beitragen, die Anfrage zu priorisieren
  • Wenn Sie daran interessiert sind, an diesem Problem zu arbeiten, oder einen Pull-Request eingereicht haben, hinterlassen Sie bitte einen Kommentar

Beschreibung

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.

Neue oder betroffene Ressource(n)

  • aws_lb_listener_rule

Mögliche Terraform-Konfiguration

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
  }
}

Verweise

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:

enhancement servicelbv2

Hilfreichster Kommentar

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. 🚀

Alle 12 Kommentare

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:

Umleiten

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"
  }
}

Feste Antwort

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!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen