我想使用 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 映射