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

Lambda多HTTP方法处理EC2:PUT/DELETE报认证缺失令牌问题

排查PUT/DELETE接口「Missing Authentication Token」问题的步骤

1. 核对Serverless.yml的API Gateway配置

  • 确认PUT/DELETE方法的authorizationType和GET/POST保持一致。如果GET/POST是NONE(无认证),但PUT/DELETE误设为AWS_IAM或其他认证类型,就会触发该错误。
    错误配置示例:
    functions:
      updateEc2:
        handler: handler.update
        events:
          - http:
              path: ec2/{id}
              method: put
              authorizer: aws_iam # 与GET/POST的认证配置不一致
    
  • 检查PUT/DELETE方法是否遗漏cors配置,跨域配置缺失可能导致请求被拦截,表现为认证错误。确保所有方法开启cors:
    http:
      path: ec2/{id}
      method: put
      cors: true
    

2. 验证请求路径与HTTP方法的匹配性

  • 确认curl调用PUT/DELETE时的路径和Serverless.yml定义完全一致。比如GET是/ec2,PUT可能需要/ec2/{instance-id},路径错误(如缺少实例ID)会让API Gateway返回403认证错误而非404。
    错误调用示例:
    curl -X PUT https://xxx.execute-api.us-east-1.amazonaws.com/dev/ec2 # 缺少实例ID参数
    
  • 检查HTTP方法是否正确发送,部分工具或脚本可能误将PUT转为POST,导致API Gateway无法匹配对应方法,返回认证错误。

3. 检查Lambda触发与API Gateway集成

  • 登录AWS控制台的API Gateway页面,查看PUT/DELETE方法的集成请求是否正确关联到对应Lambda函数。集成配置错误会导致API Gateway拒绝请求并返回认证类错误。
  • 确认API Gateway的阶段部署包含最新的PUT/DELETE方法配置,修改Serverless.yml后未重新部署会导致线上路由规则未更新。

4. 排查IAM权限(若启用认证)

  • 如果PUT/DELETE确实需要IAM认证,检查curl调用时是否携带正确的AWS签名。比如用aws-cli调用需配置正确凭证,或curl请求包含Authorization头。
    正确调用示例(用aws-cli生成签名):
    aws apigateway test-invoke-method --rest-api-id xxx --resource-id yyy --http-method PUT --path-with-query-string "/ec2/i-123456" --body '{"instanceType": "t2.medium"}'
    

5. 查看API Gateway日志定位细节

  • 开启API Gateway访问日志,查看具体错误原因。在Serverless.yml中添加日志配置:
    provider:
      apiGateway:
        metrics: true
        logging:
          level: INFO
          fullExecutionData: true
    
    部署后到CloudWatch日志组查看PUT/DELETE请求的日志,日志会包含认证类型不匹配、路径不匹配等具体错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 04:27:15