在 S3 中托管的多区域内部、域名解析静态网站

在 S3 中托管的多区域内部、域名解析静态网站

陈述

我确实有一个网站,其中有一个托管在 S3 中的单页应用程序和一个托管在 AWS Lambda 中的 Web 服务。为了避免跨站点请求,两者共享同一个域,并且我将请求路由到 PrivateLink(接口 VPC 端点)后面的应用程序负载均衡器上。

整个过程如下:

[Request] --> [Application Load Balancer] +--> [AWS Lambda]
                                          |
                                          +--> [VPC Endpoint] -> [S3]

为了使此设置生效,S3 存储桶必须与所服务的域具有相同的名称。因此,我只能有一个单身的S3 存储桶服务。

挑战

但现在,我想在两个区域运行 AWS Lambda。

失败的方法

复制整个堆栈

我可以在另一个区域复制整个堆栈并使用 Route53 来平衡流量,但是由于我在上一段中提到的限制,S3 无法工作:由于存储桶名称必须与 URL 的主机部分匹配,并且存储桶名称是唯一的,我无法在辅助区域中创建具有相同名称的存储桶。

复制除 S3 之外的所有内容

这也行不通。当我尝试访问静态文件时,VPC Endpoint 将尝试通过区域rc-zone-#URL 访问 S3,但这行不通,因为存储桶位于另一个区域。

在 ALB 中使用来自外部区域的 VPC 端点

您可以在 ALB 中使用来自不同 VPC 的 IP,只要它位于同一区域即可。所以没问题。

问题

  1. 有没有办法让我的设置跨区域,至少对于 Lambda 函数来说?跨区域VPC 对等连接我的解决方案是什么?设置 VPC 对等连接后我还需要做什么?
  2. 有没有其他我没有想到的方法可以实现我最初的目标(仅限内部的网站,静态托管在 S3 中,与 lambda 函数相同的(虚荣)域,带有区域冗余的 lambda)?

相关内容