AWS AppSync의 문제 해결 및 일반적인 실수 - AWS AppSync GraphQL

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

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 } }

매핑 템플릿 오류

매핑 템플릿이 제대로 구성되어 있지 않은 경우 errorTypeMappingTemplate인 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로 설정된 필드 데이터와 관련 오류를 반환합니다.