如何解决AWS Amplify API调用时出现的403权限错误?
REST API 403错误排查与疑问解答
403错误可能原因及排查步骤
- 检查已认证用户的IAM角色策略:确认Amplify生成的包含REST API访问权限的策略已正确附加到Cognito已认证用户角色上。可在IAM控制台的角色列表中找到
amplify-<项目名>-<环境名>-authRole,查看权限策略是否包含允许访问该REST API的语句。 - 验证API Gateway与Lambda的集成权限:确认API Gateway的执行角色拥有
lambda:InvokeFunction权限,允许调用你的MyFunction。Amplify CLI通常会自动配置,但如果异常,可在IAM控制台查看API Gateway角色的权限。 - 确认前端API调用配置:检查代码中
API.post使用的API名称是否与Amplify配置中的一致,同时确保Auth模块已正确初始化,用户处于有效登录状态。
疑问解答
1. API.post是否应自动识别当前认证用户并添加必要请求头?
是的。只要你在配置REST API时选择了Cognito用户池或IAM作为授权方式,且用户已登录,Amplify的API.post会自动从Auth模块获取会话,在请求头中添加Authorization: Bearer <JWT>。如果没自动添加,检查:
- API的授权方式配置是否正确
- 前端代码中API名称是否与Amplify CLI生成的配置匹配
- Auth模块初始化是否正常,
Auth.currentSession()能否返回有效会话
2. amplify api CLI中的“read”“create”等权限对应哪些HTTP方法?
Amplify CLI中REST API的权限与HTTP方法的默认映射为:
- create:对应POST、PUT方法
- read:对应GET方法
- update:对应PUT、PATCH方法
- delete:对应DELETE方法
配置时CLI会根据你选择的权限生成对应的IAM策略,限制用户只能通过指定HTTP方法访问API路径。
3. 将Auth.currentSession获取的JWT用于Postman时出现授权头格式错误?
Auth.currentSession().getIdToken().getJwtToken()获取的是纯JWT字符串,在Postman中需按以下格式设置授权头:
Authorization: Bearer <JWT字符串>
注意Bearer后必须加空格,不要给JWT加引号。如果仍报错,检查JWT是否过期(可通过jwt.io验证有效期),或是否复制时出现多余字符。
内容的提问来源于stack exchange,提问作者orome
相关产品推荐
相关产品推荐

