В AWS добавлена поддержка перенаправлений ELB, что очень полезно для готового использования перенаправлений с HTTP на HTTPS без использования экземпляра EC2 с прослушивающим там HTTP-сервером.
Было бы здорово, если бы вы добавили поддержку этой функции.
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
}
}
Официальное объявление: https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load -балансир/
Документация:
Мне интересно работать над этой функцией.
Ресурс aws_lb_listener
также будет затронут.
Что касается потенциальной конфигурации Terraform, я предлагаю следующее:
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"
}
}
Конфигурация для aws_lb_listener_rule
будет аналогичной.
Внимание: установка этих типов правил вне Terraform приведет к сбою провайдера AWS во всех версиях вплоть до последней (версия 1.29.0 на момент написания этой статьи): #5357
Сегодня я отправлю запрос на вытягивание, чтобы предотвратить этот тип сбоя на всех ресурсах ALB/NLB, и нам, вероятно, следует дождаться этих исправлений, прежде чем добавлять эту функцию.
Отправлен запрос на предотвращение сбоев: № 5367.
Исправление сбоя было объединено с мастером, поэтому можно работать с этим кодом поверх этих изменений. 👍
Теперь у нас есть 3 разных типа действий: «фиксированный ответ», «пересылка» и «перенаправление», каждое с разными наборами параметров.
Было бы лучше, если бы конфигурация действия для выбранного типа действия была сгруппирована в блок, а не сведена на верхнем уровне?
Примеры:
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"
}
}
}
Тип данных Action теперь группирует конфигурацию, специфичную для типа действия, во вложенном объекте, поэтому такой способ будет (почти) сопоставлением 1:1: https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_Action .
Кроме того, я заметил, что status_code
для действия перенаправления имеет префикс HTTP_
, тогда как для действия с фиксированным ответом это не так:
Если эта конфигурация status_code
будет использоваться совместно, мы должны выполнить некоторую проверку в зависимости от типа действия или выполнить какое-либо преобразование значений в поставщике Terraform.
Мы рекомендуем в большинстве случаев следовать структуре SDK, поэтому отдельные блоки в этом случае будут уместны. Это позволяет нам легко добавить проверку аргумента, а также упростить код.
Поскольку это включает в себя fixed-response
, можем ли мы обновить заголовок? Меня это особенно интересовало, и мне потребовалось немного времени, чтобы найти эту проблему, и я увидел, что над ней уже работают. Спасибо.
Кроме того, я ничего не видел о добавлении заголовков в ссылки API выше, поэтому не ясно, как я мог установить что-то вроде заголовка HSTS
в ответе, потому что ALB в прямом режиме оставляет это для поддержки приложение.
Есть ли планы добавить аутентификацию?
Запросы функции @sklemmer для аутентификации можно найти по #4707 и #4711 😄
Я надеюсь просмотреть открытый запрос на вытягивание fixed-response
/ redirect
(#5430) где-то на этой неделе.
Поддержка действий fixed-response
и redirect
была объединена с мастером через #5430 и будет выпущена в версии 1.33.0 поставщика AWS позже на этой неделе. 🚀
Это было выпущено в версии 1.33.0 поставщика AWS . См. документацию Terraform по управлению версиями провайдера или свяжитесь с нами, если вам нужна помощь в обновлении.
Я собираюсь заблокировать эту проблему, потому что она была закрыта _30 дней_ ⏳. Это помогает нашим специалистам по сопровождению находить активные проблемы и фокусироваться на них.
Если вы считаете, что эту проблему следует открыть повторно, мы рекомендуем создать новую проблему со ссылкой на эту для дополнительного контекста. Спасибо!
Самый полезный комментарий
Поддержка действий
fixed-response
иredirect
была объединена с мастером через #5430 и будет выпущена в версии 1.33.0 поставщика AWS позже на этой неделе. 🚀