![在 S3 中托管的多区域内部、域名解析静态网站](https://linux22.com/image/786862/%E5%9C%A8%20S3%20%E4%B8%AD%E6%89%98%E7%AE%A1%E7%9A%84%E5%A4%9A%E5%8C%BA%E5%9F%9F%E5%86%85%E9%83%A8%E3%80%81%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90%E9%9D%99%E6%80%81%E7%BD%91%E7%AB%99.png)
陈述
我确实有一个网站,其中有一个托管在 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,只要它位于同一区域即可。所以没问题。
问题
- 有没有办法让我的设置跨区域,至少对于 Lambda 函数来说?跨区域VPC 对等连接我的解决方案是什么?设置 VPC 对等连接后我还需要做什么?
- 有没有其他我没有想到的方法可以实现我最初的目标(仅限内部的网站,静态托管在 S3 中,与 lambda 函数相同的(虚荣)域,带有区域冗余的 lambda)?