AWS API Gateway更新Lambda授权器后仍调用旧授权器的解决方案咨询
解决AWS API Gateway授权器关联问题的步骤
我来帮你搞定这个问题——你需要精准调整API方法和授权器的关联关系,再通过部署让变更生效,就能实现GET /api/users用Admin Authorizer、PUT /api/users/{username}用User Authorizer的需求,同时保留两个授权器不删除。具体操作如下:
1. 修正API方法的授权器绑定
- 登录AWS控制台,打开API Gateway服务,定位到你的目标API。
- 左侧导航栏选择Resources,展开API资源树:
- 先确认
GET /api/users的授权器是Admin Authorizer(没问题就跳过)。 - 找到
PUT /api/users/{username}方法,点击进入详情页。 - 在Method Execution页面的Settings标签下,找到Authorization选项,点击编辑按钮。
- 从下拉菜单中选中User Authorizer,保存修改。
- 先确认
2. 重新部署API到对应阶段
API Gateway的配置变更必须部署到指定阶段才会生效,这是很容易被忽略的关键步骤:
- 左侧导航栏选择Stages,找到你正在使用的部署阶段(比如
prod或dev)。 - 点击Deploy API按钮,选择对应的API和目标阶段,确认部署操作。
3. 额外排查(如果问题仍存在)
- 检查阶段变量:如果你的API用阶段变量指定授权器,要确保变量值已经更新为User Authorizer的ID。
- 验证授权器配置:确认User Authorizer的触发条件(比如Token来源、验证逻辑)正确,避免因授权器自身配置导致异常。
- CLI快速修改(可选):如果你习惯用命令行,可执行以下命令更新方法授权器:
替换命令中的占位符为实际的ID值即可。aws apigateway update-method \ --rest-api-id 你的API_ID \ --resource-id PUT方法对应的资源ID \ --http-method PUT \ --patch-operations op=replace,path=/authorizationType,value=CUSTOM \ op=replace,path=/authorizerId,value=User授权器的ID
完成这些操作后,PUT /api/users/{username}就会使用User Authorizer,而Admin Authorizer会继续为GET /api/users提供服务,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Ashok Raj A
相关产品推荐
相关产品推荐

