我正在使用AWS Lambda和API Gateway构建无服务器应用程序。为了防止DDOS攻击进行大量请求而使我损失很多钱,我制定了一个使用计划,并指定了请求配额(例如,每月1万个请求)。这要求调用者将API密钥作为标头传递。
这看似效果很好,但我还需要为此服务启用CORS。为此,我需要允许未经授权的OPTIONS请求(“ CORS preflight”请求),因为浏览器不支持在此发送任何特殊的标头。但是后来我似乎找不到执行配额的方法,我又回到正题:数量不加控制的请求可能会花费不可预见的金额。有什么办法可以排除这种可能性?
答案 0 :(得分:4)
要对OPTIONS请求强制执行配额,请在AWS WAF中创建Web ACL并将其关联到API Gateway中的API阶段。在Web ACL中添加基于速率的规则,该规则将阻止所有超出您指定的速率限制的OPTIONS请求。可以为此专门配置Web ACL中的规则,如下所示:
有关整个过程的屏幕快照指导教程,请参见my blog post。
答案 1 :(得分:3)
您无需为对API-Gateway的任何未经授权的调用付费。 AWS正在收取此项费用。 您可以在请求获得授权后再付款,前提是请求数不超过您的使用计划。
因此,如果有人在未经身份验证的情况下在您的API上执行DDOS,则它是免费的。
如果有人使用有效的api密钥进行DDOS,则您只需要支付费用即可,直到超出使用计划为止。
查找更多信息here。
请求不收取授权和认证费用 失败。
在需要API密钥的方法上调用时,API密钥不收费 丢失或无效。
API网关限制的请求不收费 或突发速率超过预设的限制。
在速率限制或以下情况下不收取使用计划限制的请求的费用 配额超过了预先配置的限制。
因此,请确保在您的API上启用身份验证,并为所有已身份验证的请求制定使用计划。