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

API Gateway不当校验Authorization头,CloudFormation创建VPCE后自定义请求被拒

问题根因

你遇到的IncompleteSignatureException报错是AWS execute-api VPC端点的已知行为导致的:当你通过CloudFormation显式为VPC端点配置PolicyDocument(哪怕是全允许的通配符策略)时,API Gateway会强制对所有经过该端点的请求的Authorization头做AWS SigV4签名校验,即使你的API方法授权配置已经设为NONE也不会跳过该校验。
而手动在控制台创建VPC端点时,默认使用隐式的全允许策略,不会触发该强制校验逻辑,这也是你手动重建后功能正常、返回头x-amzn-vpce-config值为1的原因。

解决方案

方案1(推荐):移除CloudFormation中VPC端点的显式策略配置

VPC端点的默认策略本身就是允许所有主体访问所有操作的全权限策略,你可以直接删除模板中PolicyDocument整段配置,修改后的VPC端点模板如下:

ApiGatewayVPCEndpoint:
  Type: AWS::EC2::VPCEndpoint
  Properties:
    PrivateDnsEnabled: true
    ServiceName: !Sub com.amazonaws.${AWS::Region}.execute-api
    SecurityGroupIds:
      - !Ref [my sec group]
    SubnetIds:
      - !Ref [subnet a]
      - !Ref [subnet b]
      - !Ref [subnet c]
    VpcEndpointType: Interface
    VpcId: !Ref [my vpc]

更新CloudFormation栈后重新部署API,自定义Authorization头就会正常透传给后端Lambda,不会被API Gateway拦截。

方案2(适用于需要自定义VPC端点权限的场景)

如果业务需要限制VPC端点的访问权限,不能删除显式策略,可以在对应API Gateway的资源策略中添加如下规则,跳过IAM签名校验:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:<你的AWS区域>:<你的AWS账号ID>:<你的API ID>/*/*/*",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpce": "<你的VPC端点ID>"
        }
      }
    }
  ]
}

配置完成后重新部署API即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:45:02