Solução de problemas e erros comuns no AWS AppSync - AWS AppSync GraphQL

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solução de problemas e erros comuns no AWS AppSync

Esta seção discute alguns erros comuns e como solucioná-los.

Mapeamento de chave do DynamoDB incorreto

Se a operação do GraphQL retornar a seguinte mensagem de erro, pode ser porque a estrutura do modelo de mapeamento da solicitação não corresponde à estrutura da chave do Amazon DynamoDB:

The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code

Por exemplo, se a tabela do DynamoDB tem uma chave de hash chamada "id" e o modelo diz "PostID", conforme o exemplo a seguir, isso resulta no erro anterior, pois "id" não corresponde a "PostID".

{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }

Resolvedor ausente

Se você executar uma operação do GraphQL, como uma consulta, e obter uma resposta nula, isso pode acontecer por não ter um resolvedor configurado.

Por exemplo, se você importar um esquema que define um campo getCustomer(userId: ID!):, e não tiver configurado um resolvedor para esse campo, então ao executar uma consulta como getCustomer(userId:"ID123"){...}, você receberá uma resposta como a seguinte:

{ "data": { "getCustomer": null } }

Erros do modelo de mapeamento

Se o modelo de mapeamento não estiver configurado corretamente, você receberá uma resposta do GraphQL em que errorType é MappingTemplate. O campo message deve indicar onde o problema está no modelo de mapeamento.

Por exemplo, caso não tenha um campo operation no modelo de mapeamento da solicitação, ou se o nome do campo operation estiver incorreto, você receberá uma resposta como a seguinte:

{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }

Tipos de retorno incorretos

O tipo de retorno da fonte de dados deve corresponder ao tipo definido de um objeto no esquema, caso contrário, poderá receber um erro do GraphQL como:

"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]

Por exemplo, isso pode ocorrer com a seguinte definição de consulta:

type Query { posts: [Post] }

Que espera uma LISTA de objetos [Posts]. Por exemplo, caso tenha uma função do Lambda no Node.JS com algo semelhante ao seguinte:

const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);

Isso lançaria um erro uma vez que result é um objeto. Seria necessário alterar o retorno de chamada para result.data ou alterar o esquema para não retornar uma LISTA.

Processamento de solicitações inválidas

Quando o AWS AppSync não conseguir processar e enviar uma solicitação (devido a dados impróprios, como sintaxe inválida) para o resolvedor de campo, a carga útil da resposta retornará os dados do campo com valores definidos como null e quaisquer erros relevantes.