【问题标题】:Using a S3 Static Site with an Application Load Balancer将 S3 静态站点与应用程序负载均衡器结合使用
【发布时间】:2019-12-14 13:51:48
【问题描述】:

我有一个 ALB,它当前将流量路由到多个 url。如果我们需要执行维护,我希望能够将流量路由到静态 S3 站点。然后,我们将显示一个静态的“维护”页面,而不是我们的登录页面。

我创建了一个 CloudFront 分配,允许 S3 站点加载 SSL 证书,但我不确定如何连接该分配以将所有流量发送到 S3 维护站点。

这是我正在使用的 Terraform ALB 侦听器。我可以在target_group 指定我的CloudFront 分配arn 并让它将所有流量路由到静态站点吗?

或者我可以简单地将我的 S3 arn 与允许 ALB 访问以获取存储桶对象的 S3 策略链接?

resource "aws_alb_listener" "ssl_alb_httpslistener" {
   load_balancer_arn = "${aws_alb.alb_lis.arn}"
   port = "443"
   protocol = "HTTPS"
   ssl_policy = "Sec-TLS"
   certificate_arn = "${var.ssl_cert_arn}"

    default_action {
     target_group_arn = "${data.terraform_remote_state.php.target_arn}"
     type = "forward"
   }
}

我希望我可以将通过 ALB 的流量从 target_group 路由到静态 S3 站点。好奇这是否是解决此问题的最佳方法。

【问题讨论】:

    标签: amazon-s3 load-balancing terraform terraform-provider-aws static-site


    【解决方案1】:

    简单的答案是使用 ALB 上的重定向选项将流量转发到新的 url。我的 Route53 url 连接到与 S3 存储桶链接的 CloudFront 分配。在这里,我可以指定一个重定向 url,并通过最少的基础设施修改来保持我的 HTTPS 流量选项。

    【讨论】:

      【解决方案2】:

      您现在可以将 Lambda 函数作为目标组,并且使用 Lambda,您可以触发 S3、发出 cloudfront(http) GET 请求等。

      【讨论】:

      • lambda 的问题是,请求的主体只能是 1MB。我在提供 Angular 应用程序时遇到了同样的问题。我无法加载 main..*.js,因为它是 1.4 MB。仍在寻找另一种解决方案,因为我们希望在同一主机下拥有前端和后端。如果有人有解决方案,请发表评论!
      【解决方案3】:

      我在使用 ALB 和 lambda 时遇到了同样的 1MBytes 限制问题,并使用压缩作为解决方法。 在响应头中设置 Content-Encoding= 并相应地压缩您的文件。

      【讨论】:

        猜你喜欢
        • 2015-09-21
        • 2019-04-05
        • 2022-06-23
        • 2019-12-13
        • 2020-09-23
        • 2018-02-26
        • 1970-01-01
        • 2020-02-04
        • 2017-07-28
        相关资源
        最近更新 更多