如何为 CloudFront Web 分配背后的多个 API Gateway API 配置自定义域端点?

2 分钟阅读
0

我想使用 Amazon CloudFront Web 分配背后的 Amazon API Gateway 自定义域端点。然后,我想使用基本路径映射将 API 请求转发到多个 API。我该如何操作?

解决方案

为 REST API、HTTP API 或 WebSocket API 创建自定义域名

如果您尚未创建自定义域名,请创建自定义域名,然后将其与两个不同的 API 关联。

**注意:**WebSocket API 的自定义域名不能映射到 REST API 或 HTTP API。

对于 REST API,请按照为 REST API 设置自定义域名中的说明操作。

对于 HTTP API,请按照为 HTTP API 设置自定义域名中的说明操作。

对于 WebSocket API,请按照为 WebSocket API 设置自定义域名中的说明操作。

**注意:**在 API Gateway 中创建自定义域名后,您必须创建或更新 DNS 提供商的资源记录,以映射到您的 API 端点。有关更多信息,请参阅注册域名

本文中的示例使用了 REST API 区域自定义域名设置。

API 端点 URL 示例

https://restapiId1.execute-api.us-west-2.amazonaws.com/example1/home
https://restapiId2.execute-api.us-west-2.amazonaws.com/example2/home

自定义域 URL 示例(不含基本路径映射)

https://apigw.customdomain.com/example1/home
https://apigw.customdomain.com/example2/home

创建 CloudFront Web 分配

1.    打开 CloudFront console(CloudFront 控制台),然后选择 Create Distribution(创建分配)。

2.    在 Select a delivery method for your content(为内容选择交付方法)页面上,在 Web 下选择 Get Started(开始使用)。

3.    在 Create Distribution(创建分配)页面上,对于 Origin Domain(源域),粘贴 API 的自定义域 URL,如下所示:

源域名示例

https://apigw.customdomain.com

4.对于源路径,将其留白。**注意:**在调用 CloudFront 分配时,为源路径输入不正确的基本路径可能导致出现错误。例如,返回错误“缺少身份验证令牌”和 403 禁止访问响应代码的未授权请求错误

5.    对于 Minimum Origin SSL Protocol(最低源 SSL 协议),最好的做法是选择 TLSv1.2。请不要选择 SSLv3。API Gateway 不支持 SSLv3 协议。

6.    对于 Protocol(协议),请选择 HTTPS Only(仅限 HTTPS)。**注意:**API Gateway 不支持未加密的 HTTP 端点。有关更多信息,请参阅 Amazon API Gateway 常见问题

7.    (可选)要将自定义标头转发到您的源,请选择 Add header(添加标头),然后输入您的 Header name(标头名称)和注意: 对于 CloudFront 无法添加的自定义标头列表,请参阅 CloudFront 无法添加到源请求的自定义标头

8.    选择 Create Distribution(创建分配)。

在 CloudFront 创建分配后,分配的 Status(状态)列的值将从 InProgress 更改为 Deployed(已部署)。

有关更多信息,请参阅创建分配

测试您的 CloudFront Web 分配

1.    打开 CloudFront console(CloudFront 控制台),将 Web 分配的 Domain Name(域名)复制到剪贴板中,如下所示:

非自定义域名示例

a222222bcdefg5.cloudfront.net

2.    按照测试分配的说明操作。

成功的测试会返回 200 OK 响应。如果您收到 500 服务器错误代码,则该 Web 分配可能尚未部署。如果没有响应,则表示 CloudFront DNS 记录尚未传播。

创建 CloudFront 分配后,您的设置配置如下:

a222222bcdefg5.cloudfront.net/example1/home --> apigw.customdomain.com/example1/home --> API-1

a222222bcdefg5.cloudfront.net/example2/home --> apigw.customdomain.com/example2/home --> API-2

现在,您可以使用您的 API Gateway 自定义域名从单个 CloudFront 分配向两个 API 发送请求。

要为您的 CloudFront Web 分配配置转发传入授权标头,请参阅如何使用我自己的 CloudFront 分配设置 API Gateway?


相关信息

选择一个要为 API Gateway API 设置的端点类型

使用 WebSocket API 的 API 映射

使用 REST API 的 API 映射

使用 HTTP API 的 API 映射

AWS 官方
AWS 官方已更新 2 年前