AWS AppSync增强订阅过滤器失效,求排查解决方法
AWS AppSync订阅增强过滤未生效的排查与修复
核心问题:过滤器设置位置错误
订阅的增强过滤逻辑必须在订阅的请求映射模板中定义,而非响应模板。因为订阅过滤器是客户端建立订阅连接时就需确定的规则,响应模板仅用于处理最终推送给客户端的数据,无法影响过滤逻辑的生效。
修复步骤
调整映射模板位置
将原本写在响应模板的过滤代码移到请求模板中,修改后的请求模板如下:$extensions.setSubscriptionFilter({ "filterGroup": [ { "filters" : [ { "fieldName" : "identityId", "operator" : "eq", "value" : $context.identity.claims.identityId } ] } ] }) { "version": "2017-02-28" }响应模板简化为仅返回结果即可:
$util.toJson($context.result)验证JWT声明字段的正确性
确认你的JWT令牌中存储用户唯一ID的声明键确实是identityId。部分OIDC提供商(如Cognito)可能使用sub或其他自定义字段作为用户标识,需替换为实际的键名,例如:"value" : $context.identity.claims.sub确认mutation返回的identityId准确性
检查createTask的解析器是否正确将用户身份ID写入Task对象的identityId字段。如果mutation返回的Task对象中该字段为空或不匹配,过滤逻辑自然无法生效。检查权限配置
确保订阅的权限配置(@aws_iam/@aws_oidc)允许客户端正确传递身份信息,AppSync能正常解析$context.identity.claims中的数据。
内容的提问来源于stack exchange,提问作者trucha
相关产品推荐
相关产品推荐

