Rai*_*kas 2 amazon-web-services amazon-route53 aws-api-gateway serverless
我正在使用 lambda 函数开发小服务,该函数在您的 CLI 中使用curl.
首先,我开发了业务逻辑,使用 Serverless 部署和创建了 lambda。
其次,我使用 aws route 53 购买了域,使用 API 网关上的“自定义域名”配置了证书和路由域。
目前,如果您访问https://domain.io服务按预期工作,但如果您尝试调用curl domain.io它的输出:
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>CloudFront</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我的目标是通过调用curl domain.io.
是否可以避免重定向?或者你可以在custom domain name没有证书的情况下创建 API吗?
目前我称之为curl -F domain.io将遵循重定向,但这不是我正在寻找的解决方案。
谢谢!
从 API Gateway 中删除自定义域配置。
等待几分钟,让 API Gateway 释放 AWS Edge Network 中的自定义域(无法确定何时完成,但您会在后续步骤之一中收到错误消息。20 分钟应该够了)。
使用...execute-api...amazonaws.com分配给您的 API 阶段的通用域名创建 CloudFront 分配。
对于源协议策略,选择仅 HTTPS。
将 Origin Path 设置为您的舞台前缀(例如/prod或/v1)——无论您设置为舞台前缀。
将查看器协议策略设置为 HTTP 和 HTTPS。
将最小 TTL 和默认 TTL 设置为 0。
将分配的备用域名设置为您的自定义域。
如果您希望 SSL 有选择地在您的自定义域上工作,请将 ACM 证书与 CloudFront 分配关联。
更改您的 DNS 条目以指向*.cloudfront.net分配给您的发行版的主机名。
等待 CloudFront 分配状态从进行中更改为已部署。
测试。
为 API Gateway 启用 HTTP 似乎需要付出很多努力,但这是必要的,因为 API Gateway 专门设计为不支持 HTTP——它仅适用于 HTTPS,因为这通常是 API 的最佳实践。
问:我可以创建 HTTPS 端点吗?
是的,使用 Amazon API Gateway 创建的所有 API 都仅公开 HTTPS 终端节点。Amazon API Gateway 不支持未加密 (HTTP) 终端节点。
CloudFront 通常被称为 CDN,但它实际上是自定义 HTTP 请求操作的瑞士军刀,这就是一个例子。
一旦您验证了您的行为,您可以选择增加 CloudFront 中的默认 TTL,这将使其在几秒钟内缓存响应达到该值,通过向 API Gateway 发送更少的实际请求并向调用者重放缓存的响应来降低您的成本。
此设置与您现在拥有的不同,因为您控制的是 CloudFront 分配,而不是 API Gateway……因此您可以以 API Gateway 在控制时不允许的方式对其进行自定义。
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |