Solución de problemas y errores comunes en AWS AppSync - AWS AppSync

Solución de problemas y errores comunes en AWS AppSync

En esta sección se explican algunos errores comunes y cómo solucionarlos.

Mapeo de clave de DynamoDB incorrecto

Si una operación de GraphQL devuelve el siguiente mensaje de error, puede deberse a que la estructura de la plantilla de mapeo de solicitudes no coincide con la estructura de clave de Amazon DynamoDB:

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

Por ejemplo, si la tabla de DynamoDB tiene una clave hash llamada "id" y la plantilla dice "PostID", como en el ejemplo siguiente, se produce el error anterior, ya que "id" no coincide con "PostID".

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

Falta el solucionador

Si ejecuta una operación de GraphQL, por ejemplo una consulta, y obtiene una respuesta nula, puede ser debido a que no tiene un solucionador configurado.

Por ejemplo, si importa un esquema que define un campo getCustomer(userId: ID!): y no ha configurado un solucionador para este campo, cuando se ejecuta una consulta, por ejemplo getCustomer(userId:"ID123"){...}, recibirá una respuesta como la siguiente:

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

Errores en la plantilla de mapeo

Si la plantilla de mapeo no está configurada correctamente, recibirá una respuesta de GraphQL cuyo valor de errorType será MappingTemplate. El campo message debe indicar dónde se encuentra el problema de la plantilla de mapeo.

Por ejemplo, si la plantilla de mapeo de solicitud no tiene el campo operation o si el nombre del campo operation es incorrecto, obtendrá una respuesta similar a la siguiente:

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

Tipos de retorno incorrectos

El tipo de retorno del origen de datos debe coincidir con el tipo definido para un objeto en el esquema; de lo contrario, es posible que se produzca un error de GraphQL como este:

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

Por ejemplo, esto podría ocurrir con la siguiente definición de consulta:

type Query { posts: [Post] }

que espera una lista de objetos [Posts]. Por ejemplo, si tuviera una función Lambda en Node.JS con algo parecido a lo siguiente:

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

Se generaría un error, ya que result es un objeto. Tendría que cambiar la devolución de llamada a result.data o modificar el esquema para que no devuelva una lista.

Procesamiento de solicitudes no válidas

Si AWS AppSync no es capaz de procesar y enviar una solicitud (debido a datos incorrectos, como una sintaxis no válida) al solucionador de campos, la carga útil de la respuesta devolverá los datos de los campos con valores establecidos en null, así como cualquier otro error relevante.