Amazon web services 在用户提供的数据发布之前,您应该如何修改它';插入DynamoDB GraphQL表中的?

Amazon web services 在用户提供的数据发布之前,您应该如何修改它';插入DynamoDB GraphQL表中的?,amazon-web-services,graphql,amazon-dynamodb,aws-amplify,aws-appsync,Amazon Web Services,Graphql,Amazon Dynamodb,Aws Amplify,Aws Appsync,我正在使用AWS Amplify/DynamoDB/AppSync构建一个聊天应用程序,我希望能够审查聊天信息中的亵渎内容 我不想在客户端执行此操作,因为用户可以解决此问题。我不想在Lambda中处理它,因为我想使用gql订阅实时传递聊天消息(即,我想在将它插入数据库之前处理它) 在变异请求解析器中处理此问题的正确方法是什么?我现在有一个版本的工作,但这似乎是一个漫长的步行街区处理这个问题。如果我更改了身份验证配置,我还必须记住更新我的解析器。您需要一个修改聊天信息的变体,然后将它们插入Dyna

我正在使用AWS Amplify/DynamoDB/AppSync构建一个聊天应用程序,我希望能够审查聊天信息中的亵渎内容

我不想在客户端执行此操作,因为用户可以解决此问题。我不想在Lambda中处理它,因为我想使用gql订阅实时传递聊天消息(即,我想在将它插入数据库之前处理它)


在变异请求解析器中处理此问题的正确方法是什么?我现在有一个版本的工作,但这似乎是一个漫长的步行街区处理这个问题。如果我更改了身份验证配置,我还必须记住更新我的解析器。

您需要一个修改聊天信息的变体,然后将它们插入DynamoDb。如果消息修改的逻辑很简单,那么您可以使用。否则,你就跟着我走

您的AppSync订阅应该可以与直接lambda解析程序配合使用。它可以接收您从lambda返回的任何内容。例如:下面的订阅可以接收原始/更改的邮件内容

型突变{
sendMessage(输入:MessageInput!):SendMessageResult
}
订阅类型:{
onMessageReceived(receivedUserId:ID!):SendMessageResult
@aws_订阅(变异:[“发送消息”])
}
输入SendMessageResult{
消息ID
原始信息内容
更改消息内容
接收数据
sentUserId
森塔特
}

实际上,我正试图实现这一点,似乎我只能在响应时使用Lambda解析器,而不能在请求时使用。如果聊天信息中包含任何禁止使用的词语,我试图抛出一个错误。使用lambdas,我无法阻止无效消息被输入数据库。这可能是因为客户端使用了另一个AppSync变体,或者直接插入到DynamoDb中。解析器应该是处理逻辑并向客户端返回响应的请求处理程序。最后但并非最不重要的一点是,你可能误解了突变的解析程序。绝对不会排除我设置不正确的可能性。我让它与VTL解析器一起工作,用于
create
变异。我似乎找不到一种方法来限制lambda解析器仅在创建时更改数据。我已经构建了许多直接lambda解析器,从未遇到过这样的问题。我不知道你的lambda长什么样,我也帮不了你。我建议您从lambda中删除任何DynamoDb操作,并查看是否未插入任何消息。检查消息是否仅由lambda插入。