将 cloudfront 通配符 CNAME 子域路由到 s3 存储桶中的文件夹

Posted

技术标签:

【中文标题】将 cloudfront 通配符 CNAME 子域路由到 s3 存储桶中的文件夹【英文标题】:Route cloudfront wildcard CNAME subdomain to a folder in s3 bucket 【发布时间】:2017-06-14 18:40:54 【问题描述】:

有没有办法使用 S3 配置 单个 CloudFront 分配,以便 hello.world.com 将提供来自my-bucket.s3.amazonaws.com/hello 的文件,而foo.world.com 将提供来自my-bucket.s3.amazonaws.com/foo 的文件?

我添加了一个带有 *.world.com 通配符 CNAME 的新发行版,我可以按照描述添加来源(通过指定根文件夹),但我不知道如何根据子域路由请求。在行为设置中,有path pattern,但我认为它不适用于域,而不是文件的路径。

基本上,我想做路径重写,用单个 s3 存储桶的单个云端分发上的子域替换第一个目录。

【问题讨论】:

您是否尝试过创建单独的 CloudFront 分配 这是可以做到的,我一直在寻找答案。如果您熟悉我的答案,他们是sometimes,而是,嗯,彻底......所以我需要一点时间。但我突然想到,有些问题可能是相关的:涉及多少个通配符? foo.example.com/buzz >> example-bucket/foo/buzz 和bar.example.com/buzz >> example-bucket/bar/buzz @Michael-sqlbot 我想要的是允许用户使用用户名注册,并将他们的上传存储在 user.website.com 下。我可以创建许多云端分发,但这需要使用 AWS API 为每个用户创建一个。假设我将有 1000 个用户作为初学者——你介意分享你的解决方案吗? @Michael-sqlbot 你写过那个答案吗?我有完全相同的用例,希望用户能够选择自己的子域,然后从 S3 的文件夹中提供他们的内容(静态网站)。 没关系,这很可能在几行 Lambda@Edge 中完成。完成后我会发布答案。但可能需要一段时间,因为我处于研究阶段,尚未构建。 【参考方案1】:

我想我需要配置 s3 而不是 cloudfront,http://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html

【讨论】:

***.com/questions/29166016/… 这没有达到预期的结果。重定向规则只检查路径,它们只能用于30X 重定向浏览器,它们不做任何内部重写——只是外部重定向。

以上是关于将 cloudfront 通配符 CNAME 子域路由到 s3 存储桶中的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何为顶点(example.com)和子域(www.example.com)配置相同的来源 - aws Route53 和 CloudFront

将CNAME条目添加到裸域

Cloudfront - 重叠备用域名

将 Amazon 的 CloudFront 指向 A 记录而不是 CNAME

将子域指向 Cloudfront 时连接不安全

将 www 子域重定向到 Route 53 上的顶点(裸)域(不使用 S3)?