AWS CloudFormation Application Load Balancer - 如何将 HTTP 侦听器重定向到 HTTPS 侦听器?

Posted

技术标签:

【中文标题】AWS CloudFormation Application Load Balancer - 如何将 HTTP 侦听器重定向到 HTTPS 侦听器?【英文标题】:AWS CloudFormation Application Load Balancer - how to redirect HTTP listener to HTTPS listener? 【发布时间】:2019-02-04 17:12:26 【问题描述】:

我正在尝试为 ALB 编写 CloudFormation 模板,但在我想将 ALB 的 HTTP 侦听器的流量重定向到 HTTPS 侦听器的点上卡住了。文档只提到转发/重定向到目标组。

我知道使用 Web 界面(AWS 控制台)是可以实现的,但我想避免这种情况。在服务器上处理它也不适合我。

这个 ALB 的功能是不是根本没有在 CloudFormation 中实现,而是存在于 Console 中?

【问题讨论】:

【参考方案1】:

2018 年 11 月 19 日,Amazon 为 Elastic Load Balancer 侦听器推出了 RedirectConfig。此侦听器类型也用于 Application Load Balancer (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/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-redirectconfig.html

有关侦听器操作的 CloudFormation 文档: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html

【讨论】:

如何在弹性beantalk环境中为应用LB做这个? 我是否需要将此块包装在条件中以仅在选择“应用程序”时执行,因为我的 CFT 根据传递的参数创建 ALB 或 NLB。如果出现“网络”,AWS 会自动为我忽略它吗?【参考方案2】:

目前看来,唯一的选择是编写一个自定义资源来管理它。看: https://github.com/jheller/alb-rule 一个可靠的例子来实现 - 或用作您自己实现的基础。 (我与上面的代码没有从属关系 - 只是因为我自己需要做同样的事情而发现)

【讨论】:

【参考方案3】:

事实证明,redirect 目前还没有在 CF 中实现,遗憾的是,AWS 会发生什么 - source。

【讨论】:

【参考方案4】:

他们最近实施了它。看一看:https://docs.aws.amazon.com/elasticloadbalancing/latest/APIReference/API_RedirectActionConfig.html

【讨论】:

自July 2018 以来,它是他们API 的一部分,如果我没记错的话,但正如我所问的问题所指的那样,CloudFormation 中仍然不存在。

以上是关于AWS CloudFormation Application Load Balancer - 如何将 HTTP 侦听器重定向到 HTTPS 侦听器?的主要内容,如果未能解决你的问题,请参考以下文章

将现有 AWS 资源整合到 CloudFormation 堆栈中

AWS Cloudformation的相关概念

CloudFormation - 将标签应用于其他 AWS 资源

AWS CloudFormation:Cognito LambdaTrigger CustomEmailSender - 属性“AWS CloudFormation 目前不支持。”和 CDK 的使用

AWS学习笔记--利用CloudFormation管理AWS资源

AWS — AWS CloudFormation