【问题标题】:Use Cloudflare to access AWS S3 with wildcard record subdomain使用 Cloudflare 通过通配符记录子域访问 AWS S3
【发布时间】:2020-03-11 15:47:56
【问题描述】:

我正在尝试关注this article on cloudflare,了解如何通过子域获取 Amazon S3 资产。

当我使用 DNS 手动定义特定子域时,它按预期工作,如下所示:

CNAME ----- 资产 ------ fullpage.sites.s3-website-us-west-1.amazonaws.com --- 橙色云图标

然后我可以在使用时访问我的亚马逊文件: https://assets.example.com

但是,我想使用通配符,以便可以将每个子域重定向到我的 Amazon S3 存储桶中的文件夹。我不想手动定义这些子域,因为这是我的网络用户将在他们的网络应用程序中生成的东西。

因此,我使用通配符 NAME 添加以下记录。 CNAME ----- * ------ fullpage.sites.s3-website-us-west-1.amazonaws.com --- 灰色云图标

请注意,我不允许使用“橙色云图标”(代理),我必须使用灰色图标(仅限 DNS)

现在此 URL 已按预期停止工作: https://assets.example.com

我得到一个 aws 错误:

404 未找到

  • 代码:NoSuchBucket
  • 消息:指定的存储桶不存在

发生了什么事?

我该如何解决这个问题?

【问题讨论】:

  • 您需要像我提到的here 那样的解决方案,它可以在将请求发送到 S3 之前重写路径。我的解决方案使用 Lambda@Edge 来做到这一点。使用 Cloudflare,我假设您可以使用 Cloudflare Workers 进行路径重写,但我不知道。到目前为止,您所做的将需要一个为每个子域命名的存储桶,这不太可能。

标签: amazon-web-services amazon-s3 cloudflare cloudflare-workers


【解决方案1】:

请注意非通配符 CNAME 记录的右侧有一个橙色云图标并显示“已代理”。这意味着对该主机名的请求首先由 Cloudflare 处理,包括例如运行 Cloudflare Workers 来重写 URL。

不过,您的通配符主机名显示“仅限 DNS”。这意味着主机名被设置为直接指向 AWS 的 IP 地址;请求不会先发送到 Cloudflare。 AWS 不希望收到对您的主机名的请求,因此它在看到它们时会返回 404 错误。

不幸的是,Cloudflare 仅支持代理企业帐户的通配符主机名,因此您无能为力,除非您想升级到企业合同,通常每月大约几千美元。

【讨论】:

  • 感谢您的信息!!我最终为此搬到了 Cloudflont,它现在就像一个魅力:)
猜你喜欢
  • 2016-01-27
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 2014-09-06
  • 1970-01-01
  • 2020-10-08
相关资源
最近更新 更多