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

API Gateway报502及AccessDeniedException错误求助(AWS SAM环境)

解决API Gateway调用带Authorizer Lambda端点的502错误与AccessDeniedException

问题场景

我在使用带嵌套栈的AWS SAM部署架构中,遇到了API Gateway返回502 Bad Gateway的问题,同时伴随如下异常:

Endpoint response body before transformations:

return (<AccessDeniedException> <Message>Unable to determine service/operation name to be authorized</Message> </AccessDeniedException>)

经过测试,这个问题仅出现在配置了自定义Authorizer Lambda的端点上——授权器本身能正常执行完成所有转换,但请求转发到后端Lambda时就触发了上述权限错误。

已尝试但无效的操作

  • 通过aws-cli手动为后端Lambda添加Invoke权限,无任何效果
  • 按相关配置指南添加Invoke Permissions声明,问题依旧存在

临时修复方法

手动进入API Gateway控制台操作,无需修改任何配置内容,仅需触发一次权限同步即可解决:

  1. 找到出现问题的端点,进入集成请求设置页面
  2. 点击编辑Lambda函数按钮
  3. 直接勾选对应选项并保存(无需修改Lambda函数名称)

操作完成后错误会立即消失,但重新构建SAM栈后问题会再次出现,因为SAM部署时不会保留手动添加的权限配置。

持久化解决方案(从SAM模板层面修复)

这个问题的核心原因是:嵌套栈架构下,SAM默认不会自动为API Gateway生成调用后端Lambda的完整权限,尤其是搭配自定义Authorizer时,权限关联容易因栈隔离出现遗漏。

你需要在SAM模板中显式声明API Gateway调用后端Lambda的权限资源,示例配置如下:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
  # 后端业务Lambda函数
  BackendFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/backend/
      Handler: index.handler
      Runtime: nodejs18.x

  # 带自定义授权器的API Gateway
  ApiGateway:
    Type: AWS::Serverless::Api
    Properties:
      StageName: prod
      Auth:
        DefaultAuthorizer: CustomAuthorizer
        Authorizers:
          CustomAuthorizer:
            FunctionArn: !GetAtt AuthorizerFunction.Arn

  # 关键:添加API Gateway调用后端Lambda的权限声明
  ApiInvokeBackendPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !GetAtt BackendFunction.Arn
      Principal: apigateway.amazonaws.com
      SourceArn: !Sub "arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${ApiGateway}/*/*/*"

如果使用嵌套栈,还要确保权限资源在正确的栈层级中,或者通过栈输出值跨栈传递Lambda ARN和API Gateway ARN,避免因栈隔离导致权限无法正确关联。

原理说明

手动编辑集成请求并保存时,API Gateway会自动补全缺失的Lambda Invoke权限;而SAM部署时如果没有显式声明该权限,嵌套栈的资源隔离机制会阻止自动权限生成,最终导致请求转发时出现权限判定失败的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:01:01