Amazon web services 禁用http重定向到https

Amazon web services 禁用http重定向到https,amazon-web-services,aws-api-gateway,amazon-route53,serverless,Amazon Web Services,Aws Api Gateway,Amazon Route53,Serverless,我正在使用lambda函数开发一个小服务,它使用curl在CLI中返回当天的事实 首先,我开发了业务逻辑,使用Serverless部署并创建了lambda 其次,我使用aws route 53购买了域,使用API网关上的自定义域名提供了证书和路由域 目前,如果您要访问服务,服务将按预期工作,但如果您尝试调用curl domain.io,它将输出: <html> <head><title>301 Moved Permanently</title>&l

我正在使用lambda函数开发一个小服务,它使用curl在CLI中返回当天的事实

首先,我开发了业务逻辑,使用Serverless部署并创建了lambda

其次,我使用aws route 53购买了域,使用API网关上的自定义域名提供了证书和路由域

目前,如果您要访问服务,服务将按预期工作,但如果您尝试调用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>
我的目标是通过调用curl domain.io,让服务在没有SSL或重定向的情况下运行

是否可以避免重定向?或者您可以创建没有证书的API自定义域名吗

目前我调用curl-F domain.io,它将遵循重定向,但这不是我要寻找的解决方案


谢谢大家!

从API网关中删除自定义域配置

请等待几分钟,让API Gateway在AWS边缘网络中释放自定义域。无法确定此操作何时完成,但在完成此操作之前,您将在后续步骤之一中遇到错误。20分钟应该足够了

使用分配给api阶段的通用…执行api…amazonaws.com域名创建CloudFront发行版

对于源协议策略,选择仅HTTPS

将原点路径设置为阶段前缀,例如/prod或/v1-设置为阶段前缀的任何内容

将查看器协议策略设置为HTTP和HTTPS

将最小TTL和默认TTL设置为0

将分发的备用域名设置为自定义域

如果希望SSL选择性地在自定义域上工作,请将ACM证书与CloudFront发行版相关联

将DNS条目更改为指向分配给您的发行版的*.cloudfront.net主机名

等待CloudFront分发状态从正在进行更改为已部署

测试

针对API网关启用HTTP似乎需要付出很多努力,但这是必要的,因为API网关是专门设计来不支持HTTP的——它只适用于HTTPS,因为这通常是API的最佳实践

问:我可以创建HTTPS端点吗

是的,使用AmazonAPI网关创建的所有API仅公开HTTPS端点。Amazon API网关不支持未加密的HTTP端点

CloudFront通常被称为CDN,但实际上它是定制HTTP请求操作的瑞士军刀,这就是一个例子

验证您的行为后,您可以选择增加CloudFront中的默认TTL,这将导致它在几秒钟内将响应缓存到该值,通过向API网关发送较少的实际请求并将缓存的响应重放到调用方来降低成本


此设置与您现在的设置不同,因为您控制的是CloudFront发行版,而不是API网关。。。因此,您可以使用API网关控制时不允许的方式对其进行自定义。

不清楚为什么您不想只使用HTTPS—世界正朝着这个方向发展。但是,这应该是可能的,尽管它不是标准的。是您自己创建并配置了此CloudFront发行版,还是API网关自动提供的隐式/隐藏CloudFront发行版?我的目标是为CLI创建工具,并避免对curl使用-F标志。这是我想要实现的一个很好的例子。是的,它是隐藏的,由API网关完成,这正是我要找的,谢谢!