Amplify GraphQL无明显原因突然失效,请求排查问题原因
检查API授权与权限配置
确认Amplify生成的IAM角色(比如amplify-<appname>-<env>-<id>-appsyncRole)是否仍具备访问AppSync和DynamoDB的权限。有时AWS IAM策略会被意外修改或过期,可在IAM控制台查看该角色的权限策略,确保包含appsync:GraphQL操作以及对应DynamoDB表的读写权限。另外,Cognito用户池的附加策略是否正常,确保已授权用户能调用GraphQL API。验证本地与云端配置同步
执行amplify status命令检查本地配置与云端资源是否一致,若存在差异,运行amplify pull拉取最新的云端配置(包括API端点、密钥等)。时隔一周可能云端API有更新,但本地aws-exports.js未同步,导致请求发送到错误的端点或使用无效的密钥。查看AppSync执行日志
登录AWS AppSync控制台,找到对应的API,开启CloudWatch日志并设置日志级别为ALL,然后重新触发GraphQL请求,查看日志中的具体错误信息。常见问题包括:权限拒绝(Unauthorized)、数据源映射错误(比如表名不匹配)、请求格式错误(比如变量类型不匹配)。检查JWT令牌有效性
在浏览器开发者工具的Network标签中,查看GraphQL请求的Authorization头,确认JWT令牌是否有效。可以用JWT解码工具检查令牌的过期时间exp字段,若已过期,确认Amplify是否自动刷新令牌。若刷新失败,检查Cognito用户池的应用客户端配置,确保允许令牌刷新。排查本地缓存与客户端状态
清除浏览器缓存,或在应用中调用Amplify.Auth.signOut()后重新登录,重置客户端状态。Amplify的本地缓存可能存储了失效的会话信息,导致API请求携带无效凭证。另外,检查aws-exports.js中的aws_appsync_authenticationType是否正确(比如AMAZON_COGNITO_USER_POOLS)。确认AppSync数据源映射
虽然DynamoDB控制台能正常操作,但AppSync的数据源可能被修改。在AppSync控制台查看数据源配置,确认关联的DynamoDB表正确,且数据源使用的IAM角色具备访问该表的权限。若表名或ARN被修改,会导致AppSync无法正确读写数据。
内容的提问来源于stack exchange,提问作者MrPie

