AWS API Gateway自定义域名配置异常:404转403错误排查求助
AWS Lambda+API Gateway自定义域名配置排查:404/403错误解决思路
核心问题分析
直接访问API Gateway原生端点出现404→403错误,说明问题根源在于API Gateway本身的部署、权限或集成配置,而非自定义域名的Route53映射(但后续仍需验证映射正确性)。以下是针对性排查步骤:
1. API Gateway部署阶段与映射验证
- 检查API映射配置:确认自定义域名的路径映射是否关联已部署的API阶段。比如,若映射路径为
/,需确保目标API的对应阶段(如prod)已经完成部署,且阶段名称与映射配置完全一致。未部署的阶段会导致404,部署后若映射阶段不匹配可能触发权限类错误。 - 验证API部署状态:进入API Gateway控制台,查看目标API的「部署历史」,确认最新部署的阶段状态正常,且阶段的访问路径与你测试的端点路径匹配(比如
https://d-frdw0740fd.execute-api.us-east-1.amazonaws.com/prod是否可访问,若根路径无阶段,需确认是否部署到了默认阶段)。
2. 权限配置排查(403 Forbidden核心原因)
- API Gateway资源策略:若为API Gateway配置了资源策略,检查是否误设置了IP限制、账号白名单等规则,导致请求被拦截。可临时移除资源策略测试,若请求恢复正常,再调整策略规则。
- Lambda调用权限:确保API Gateway被授权调用目标Lambda函数。可通过AWS CLI补全权限(替换参数为你的实际信息):
aws lambda add-permission --function-name YOUR_LAMBDA_FUNCTION_NAME --statement-id apigateway-invoke --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:us-east-1:YOUR_AWS_ACCOUNT_ID:d-frdw0740fd/*/GET/" - Lambda执行角色:确认Lambda的执行角色拥有
lambda:InvokeFunction权限,且无过度限制的权限策略。
3. API Gateway集成与路径配置
- 路径与方法匹配:检查API Gateway中是否创建了对应请求路径(如根路径
/)的请求方法(GET/POST等),且该方法已正确集成到Lambda函数。路径不匹配会直接导致404,集成配置错误(如Lambda ARN错误)则可能触发403。 - 代理集成设置:若使用Serverless框架,确认是否启用了Lambda代理集成(Serverless默认开启,但需检查
serverless.yml中http事件的proxy配置)。未启用代理集成可能导致请求无法正确传递到Lambda。
4. Serverless框架配置验证
- 检查
serverless.yml中的API事件配置:确保函数关联的HTTP事件路径、方法与测试路径一致,示例:functions: yourFunction: handler: handler.main events: - http: path: / method: get cors: true # 若需跨域可添加 - 自定义域名配置(若在Serverless中定义):确认
customDomain字段的domainName、certificateName、stage等参数正确,且部署日志中无资源创建失败提示。执行serverless deploy时需留意是否有API Gateway阶段部署、权限添加的报错信息。
5. Route53自定义域名映射后续验证
当API Gateway原生端点恢复正常后,检查Route53托管区的记录:
- 必须创建A类型别名记录,指向API Gateway的自定义域名(而非原生端点),确保别名目标选择正确的AWS区域和API Gateway资源。
- 使用
nslookup your-custom-domain.com验证域名解析是否指向正确的API Gateway IP地址。
内容的提问来源于stack exchange,提问作者Adriel Klein
相关产品推荐
相关产品推荐

