通过aws-sam配置AWS API Gateway的Firebase授权部署报错如何解决
部署报错根因及解决
你在template.yaml的Parameters区块声明了FirebaseProjectId参数,但部署SAM栈时没有传入该参数的取值,触发了CloudFormation的参数校验错误。同时你当前的代码并未使用该定义好的参数,反而错误引用了不存在的逻辑IDaws-7e5db,也会导致后续部署报错。
修正步骤:
- 调整template.yaml中JWT配置的引用逻辑,将原本硬写的
aws-7e5db替换为你声明的参数:
JwtConfiguration: audience: - !Ref FirebaseProjectId issuer: !Sub https://securetoken.google.com/${FirebaseProjectId}
- 部署时传入Firebase项目ID参数,可选两种方式:
- 部署命令中增加参数覆盖:
sam deploy --parameter-overrides FirebaseProjectId=你的实际Firebase项目ID - 直接在Parameters区块为参数增加默认值,避免每次部署传参:
Parameters: FirebaseProjectId: Type: String Default: 你的实际Firebase项目ID
Firebase授权配置其他问题修正
你当前的授权器核心配置逻辑是正确的,身份源取Authorization请求头、audience和issuer的取值规则符合Firebase ID token的校验要求,修正上述参数引用问题后即可正常校验Token。除此之外还有两处错误需要修正:
- Lambda代码中取邮箱的逻辑多嵌套了一层claims字段,
event.requestContext.authorizer.jwt.claims本身就是完整的claims对象,无需再取.claims属性,调整为:
const email = jwt.email;
- 调用接口时需要在Authorization头中传入
Bearer前缀加Firebase返回的ID token,否则会被授权器拦截返回401。
内容的提问来源于stack exchange,提问作者PeakGen
相关产品推荐
相关产品推荐

