翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
へのコールバックを変更するか、リストを返さないようにスキーマを変更する必要があります。
無効なリクエストの処理
AWS AppSync が (無効な構文などの不適切なデータが原因で) フィールドリゾルバーにリクエストを処理および送信できない場合、レスポンスペイロードは、null
に設定された値と関連するエラーを含むフィールドデータを返します。