You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS API Gateway中拒绝未映射的方法请求

如何阻止API Gateway未映射方法触发Lambda

你的问题核心是:API Gateway中某路径仅配置了POST方法,但用GET访问时,虽然返回405却仍触发Lambda。要解决这个,得从API Gateway的请求处理逻辑入手,以下是几种可行方案:

方案1:为未映射方法设置「无集成」直接返回405

这是最直接的处理方式,针对目标路径下的未允许方法(比如GET),直接让API Gateway返回405,不触发任何后端集成:

  • 打开API Gateway控制台,找到你的API和目标路径 /aws/test/save
  • 点击「创建方法」,选择GET,然后在集成类型里选「无」
  • 进入「方法响应」设置,添加状态码405,同时添加响应头 Allow: POST(告诉客户端允许的方法)
  • 重新部署API,之后再用GET访问该路径,API Gateway会直接返回405,不会调用Lambda

方案2:用资源策略拦截未允许的请求

如果需要批量管控多个路径或方法,用API Gateway的资源策略更高效,在请求到达Lambda前就直接拒绝:

  • 进入API Gateway的「资源策略」页面,添加以下策略(替换占位符为你的实际信息):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<你的区域>:<你的账号ID>:<你的API ID>/*/POST/aws/test/save"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<你的区域>:<你的账号ID>:<你的API ID>/*/GET/aws/test/save"
    }
  ]
}
  • 这个策略明确允许POST方法访问目标路径,拒绝GET方法,请求会被API Gateway直接拦截,完全不会触发Lambda

方案3:检查并删除ANY方法

如果你的目标路径下配置了ANY方法,那所有未单独映射的方法都会走ANY的集成,自然会触发Lambda。这种情况下:

  • 直接删除该路径下的ANY方法
  • 只保留需要的POST方法,再按方案1处理其他可能的未允许方法

内容的提问来源于stack exchange,提问作者Madesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:15:07