기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS AppSync의 문제 해결 및 일반적인 실수
이 단원에서는 몇 가지 일반적인 오류와 이러한 오류를 해결하는 방법을 설명합니다.
잘못된 DynamoDB 키 매핑
GraphQL 작업에서 다음 오류 메시지를 반환하면 요청 매핑 템플릿 구조가 Amazon DynamoDB 키 구조와 일치하지 않기 때문일 수 있습니다.
The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code
예를 들어, DynamoDB 테이블에 "id"
라는 해시 키가 있고 다음 예에서처럼 템플릿에 "PostID"
가 지정되어 있는데 "id"
가 "PostID"
와 일치하지 않기 때문에 위와 같은 오류가 발생합니다.
{ "version" : "2017-02-28", "operation" : "GetItem", "key" : { "PostID" : $util.dynamodb.toDynamoDBJson($ctx.args.id) } }
해석기 누락
쿼리 등과 같은 GraphQL 작업을 실행했는데 null 응답을 가져온 경우 해석기를 구성하지 않은 것이 원인일 수 있습니다.
예를 들어 getCustomer(userId:
ID!):
필드를 정의하는 스키마를 가져왔는데 이 필드에 대해 해석기를 구성하지 않은 경우 getCustomer(userId:"ID123"){...}
등과 같은 쿼리를 실행하면 다음과 같은 응답을 얻습니다.
{ "data": { "getCustomer": null } }
매핑 템플릿 오류
매핑 템플릿이 제대로 구성되어 있지 않은 경우 errorType
이 MappingTemplate
인 GraphQL 응답이 수신됩니다. message
필드는 매핑 템플릿에서 문제가 발생한 지점을 나타내야 합니다.
예를 들어, 요청 매핑 템플릿에 operation
필드가 없거나 operation
필드 이름이 잘못된 경우 다음과 같은 응답을 얻을 수 있습니다.
{ "data": { "searchPosts": null }, "errors": [ { "path": [ "searchPosts" ], "errorType": "MappingTemplate", "locations": [ { "line": 2, "column": 3 } ], "message": "Value for field '$[operation]' not found." } ] }
잘못된 반환 형식
데이터 원본의 반환 형식은 스키마에 정의한 객체 형식과 일치해야 합니다. 그렇지 않으면 다음과 같은 GraphQL 오류가 표시될 수 있습니다.
"errors": [ { "path": [ "posts" ], "locations": null, "message": "Can't resolve value (/posts) : type mismatch error, expected type LIST, got OBJECT" } ]
예를 들어, 쿼리 정의가 다음과 같은 경우 이러한 오류가 발생할 수 있습니다.
type Query { posts: [Post] }
이 쿼리 정의는 [Posts]
객체 목록을 반환해야 합니다. 예를 들어, 다음과 같은 쿼리 정의가 포함된 Node.JS로 된 Lambda 함수가 있는 경우:
const result = { data: data.Items.map(item => { return item ; }) }; callback(err, result);
result
가 객체이기 때문에 오류가 발생할 수 있습니다. 콜백을 result.data
로 변경하거나 LIST를 반환하지 않도록 스키마를 변경해야 할 수 있습니다.
잘못된 요청 처리
AWS AppSync가 요청을 처리하고 필드 해석기로 보낼 수 없는 경우(잘못된 구문과 같은 부적절한 데이터로 인해) 응답 페이로드는 값이 null
로 설정된 필드 데이터와 관련 오류를 반환합니다.