我正在做一个无服务器架构的项目。
我发现,虽然AWS说API网关可以保护您的资源免受DDoS攻击。
但是如果有一个坏用户不断向你的服务发送垃圾邮件,
API网关不能提供一个合适的方法来处理这类问题。
所以我开始想我能做什么:
- AWS WAF显然是一个解决方案。
我在stackoverflow上找到了这篇文章:API网关与aws waf
然后为了设置WAF,
我在API网关前面放了一个Cloud Front发行版。
我意识到这可能是一个变通的解决方案,但它是吗?这是我发现的问题:
我有一个云前端分布,它的域名是
cdn.net
我将原始路径设置为我的api网关:
https://sampleagigw.amazon.com
,并将路径设置为其阶段dev
。当我调用GET
http://cdn.net/posts
时,它将返回我期望的结果。然后如果你把
http://cdn.net/posts
放在浏览器上,它会让你大吃一惊,它也会在浏览器的url栏上暴露API网关的url:https://sampleagigw.amazon.com/dev/posts
这意味着WAF和Cloud front的所有工作都没有意义。
有我误解的地方吗?
检查您的额外CloudFront分发(cdn.net)上的"查看器协议策略",并确保它设置为"将HTTP重定向到HTTPS"或"仅HTTPS"。或者,你可以编辑你的origin并将"origin Protocol Policy"设置为"HTTPS Only"。
如果你有"查看器协议策略"设置为"HTTP和HTTPS"one_answers"源协议策略"设置为"匹配查看器",那么我可以看到你将如何得到这个结果。您在浏览器上输入http://cdn.net/posts
,然后cdn.net发行版尝试连接到http://sampleagigw.amazon.com
(没有https/tls/ssl)。这是由API Gateway创建的CloudFront发行版,它被设置为"将HTTP重定向到HTTPS"。因为它收到了一个HTTP请求,所以它返回一个302重定向到http://sampleagigw.amazon.com
。它由cdn.net分发版返回给浏览器。然后浏览器跟随302重定向,在浏览器的URL栏中留下http://sampleagigw.amazon.com
URL。