1
7
更新:这个答案在编写时是正确的,下面描述的技术仍然是完全可行的,但由于Lambda@Edge正如我在回答 Serving a multitude of static sites from a wildcard domain in AWS .
从技术上讲,要做到这一点,你不需要重定向。你需要重写路径,这就是为什么你最终的问题的答案是“不”的原因——因为路由53(以及一般的DNS)不能做任何与路径相关的事情。 Route 53确实支持通配符DNS,但如果CloudFront和/或S3不支持将HTTP请求的主机标头放入路径的机制(它们不支持这种机制),那么这种帮助是有限的。
现在,这可以在“零接触”模式下轻松完成,只需一条路线53
然后,您需要代理将实际的bucket端点主机名发送到S3,而不是浏览器提供的主机名:
代理将修改后的请求发送给S3,并将S3的响应返回给CloudFront,CloudFrond将响应返回给浏览器。 但是,如果您不想采用这种方法,因为需要服务器,那么替代解决方案如下:
这一切都可以通过编程实现
通过API,使用任何一个SDK,或使用
请注意,使用自己的CloudFront分发版的每个站点都没有明显的缺点,因为您的命中率不会有所不同,而且分发版没有单独收费——只有请求和带宽收费。 还要注意,CloudFront有一个默认值 limit of 200 distributions per AWS account 但这是一个软限制,可以通过向AWS支持部门发送请求来增加。 |
2
6
自从Lambda@edge这可以通过Cloud Front“Viewer Request”事件触发的lambda函数来完成。
下面是这样一个Lambda函数的示例,其中请求如下
您需要使用CNAME进行CF分发
至于成本,看看 lambda pricing 。当前定价为每百万次请求0.913美元 |
3
-1
通配符可以在S3上使用。我只需要放一个指向IP的A记录*,就可以了。 |
tharun · 在孟买为aws api网关端点使用自定义域 6 年前 |
DevBabai · 如何在boto3中传递json文件 6 年前 |
Shruggie · 将发送到AWS子域的所有电子邮件转发到单个帐户 6 年前 |
noli · 如何将DNS委派给单独的AWS帐户? 6 年前 |