AWS CloudFormation 应用负载均衡器 - 如何将 HTTP 监听器重定向到 HTTPS 监听器?

21

我正在尝试为ALB编写CloudFormation模板,但遇到了一个问题:我想将ALB的HTTP监听器流量重定向到HTTPS监听器,但文档中只提到了转发/重定向到目标组。

我知道可以使用Web界面(AWS控制台)实现此目标,但我不想这样做。同时,在服务器上处理它也不行。

这个ALB特性在CloudFormation中是否没有被实现,但在控制台中存在?

4个回答

49

2018年11月19日,亚马逊为弹性负载均衡监听器引入了RedirectConfig。该监听器类型也用于应用程序负载均衡器(ALB)。

以下是通常的HTTP到HTTPS重定向示例配置。请将“PublicLoadBalancerBackend”替换为您的负载均衡器CloudFormation对象。

  PublicLoadBalancerHttpRedirectListener:
    Type: AWS::ElasticLoadBalancingV2::Listener
    DependsOn:
      - PublicLoadBalancerBackend
    Properties:
      DefaultActions:
        - RedirectConfig:
            Host: "#{host}"
            Path: "/#{path}"
            Port: 443
            Protocol: "HTTPS"
            Query: "#{query}"
            StatusCode: HTTP_301
          Type: redirect
      LoadBalancerArn: !Ref 'PublicLoadBalancerBackend'
      Port: 80
      Protocol: HTTP

关于RedirectConfig的CloudFormation文档: https://docs.aws.amazon.com/zh_cn/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html

关于Listener Action的CloudFormation文档: https://docs.aws.amazon.com/zh_cn/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html


1
如何在弹性 Beanstalk 环境中为应用程序 LB 进行此操作? - DenCowboy
我需要将此代码块包装在条件语句中,以便仅当选择“application”作为我的CFT时才执行,因为我的CFT根据传递的参数创建ALB或NLB。如果选择了“network”,AWS会自动忽略它吗? - wheeleruniverse

4

目前看来唯一的选择是编写自定义资源来管理它。请参见:https://github.com/jheller/alb-rule,这是一个很好的示例,可以用作实现的基础或直接使用。(我与上述代码没有关联 - 只是为了满足自己的需求而找到了它)


0

事实证明,目前CF中尚未实现redirect,这并不令人意外,因为这是AWS的惯常做法 - source


-4

1
自2018年7月份(https://aws.amazon.com/about-aws/whats-new/2018/07/elastic-load-balancing-announces-support-for-redirects-and-fixed-responses-for-application-load-balancer/),它已经是他们的API的一部分了,如果我没记错的话,但仍然不存在于CloudFormation中,正如我所提出的问题。 - the0ffh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接