我应该如何启用我的 AWS API 网关使用自定义域?

问题描述 投票:0回答:1

这听起来是一个简单而愚蠢的问题,但我就是想不出一种简单的方法来完成它。

因此,我在 NameCheap 上注册了域名,并使用 Cloudflare 的名称服务器。我有一个 Lambda 函数,可以通过 AWS API 网关访问。我创建了一个特殊的子域

api.my-domian.com
,并希望其他人使用此域来访问 Lambda 函数。

我尝试让 Cloudflare 代理请求和响应,但总是收到“403禁止”错误,不确定 AWS 现在是否不允许 Cloudflare 连接到其资源。

我尝试创建一个 CNAME 记录,将我的域指向 AWS API 域,但是,浏览器抱怨该证书不受信任,因为浏览器正在访问

api.my-domain.com
,但证书是为了证明
*.amazonaws.com

我尝试创建重定向,但是,由于我的 API 使用图像响应,浏览器将首先发送预检以检查 CORS,并且我收到错误消息“预检不允许重定向”。

我可以将我的名称服务器迁移到 Route 53 并使用 Cloudfront,最终可以解决这个问题。但我只是想知道,如何才能在不花费太多精力的情况下使其发挥作用。

api aws-lambda dns cloudflare
1个回答
0
投票

您必须实际配置 AWS API Gateway 才能了解域名,然后 API Gateway 才会允许您向其发送流量。当您执行此操作时,API Gateway 将要求您附加 SSL 证书。您可以使用 AWS Certificate Manager 免费为域创建 SSL 证书。

完成此操作后,您将能够在 Cloudflare 中配置指向 API 的 CNAME 记录,并且 API Gateway 将接受该流量。配置 Cloudflare 来代理此时的流量,这完全是可选的。


我尝试让 Cloudflare 代理请求和响应,但总是收到“403禁止”错误,不确定 AWS 现在是否不允许 Cloudflare 连接到其资源。

这不起作用,因为 AWS 在请求的主机标头中看到了域名,而您尚未将 API Gateway 配置为实际从该域提供 API。


我可以将我的名称服务器迁移到 Route 53 并使用 Cloudfront,最终可以解决这个问题。

这根本不能解决问题。为此使用 Route53 或 CloudFront 而不是 Cloudflare 的理由为零。您只需要配置 API Gateway 即可识别域名。在任何一种情况下你都必须这样做。

© www.soinside.com 2019 - 2024. All rights reserved.