翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Scan
Scan
リクエストマッピングドキュメントでは、 AWS AppSync DynamoDB リゾルバーに DynamoDB にScan
リクエストを行うように指示し、以下を指定できます。
-
結果を除外するフィルタ
-
使用するインデックス
-
返す項目の数
-
整合性のある読み込みを使用するかどうか
-
ページ分割トークン
-
並列スキャン
Scan
マッピングドキュメントの構造は次のとおりです。
{ "version" : "2017-02-28", "operation" : "Scan", "index" : "fooIndex", "limit" : 10, "consistentRead" : false, "nextToken" : "aPaginationToken", "totalSegments" : 10, "segment" : 1, "filter" : { ... }, "projection" : { ... } }
各フィールドの定義は以下のようになります。
Scan フィールド
-
version
-
テンプレート定義バージョン
2017-02-28
と2018-05-29
は現在サポートされています。この値は必須です。 -
operation
-
実行する DynamoDB の処理。
Scan
DynamoDB の処理を実行するには、これをScan
に設定する必要があります。この値は必須です。 -
filter
-
DynamoDB からの結果が返される前に、その結果をフィルタリングするために使用するフィルタです。フィルタの詳細については、「フィルタ」を参照してください。このフィールドはオプションです。
-
index
-
クエリを実行するインデックスの名前です。DynamoDB クエリの処理により、ハッシュキーのプライマリキーインデックスに加えて、ローカルセカンダリインデックスとグローバルセカンダリインデックスをスキャンできます。指定されると、DynamoDB が指定されたインデックスにクエリを実行します。省略すると、プライマリキーインデックスに対してクエリが実行されます。
-
limit
-
一度に評価する項目の最大数です。このフィールドはオプションです。
-
consistentRead
-
DynamoDB にクエリを実行する際に整合性のある読み込みを使用するかどうかを示すブール値です。このフィールドはオプションであり、デフォルトは
false
です。 -
nextToken
-
前のクエリを継続するためのページ分割トークンです。これは前のクエリから取得されます。このフィールドはオプションです。
-
select
-
デフォルトでは、 AWS AppSync DynamoDB リゾルバーはインデックスに射影される属性のみを返します。より多くの属性が必要な場合にこのフィールドを設定します。このフィールドはオプションです。サポートされている値には以下があります。
-
ALL_ATTRIBUTES
-
指定されたテーブルまたはインデックスのすべての項目の属性を返します。ローカルセカンダリインデックスに対してクエリを実行する場合、DynamoDB は、親のテーブルからインデックスの項目に一致したすべての項目をフェッチします。インデックスがすべての項目の属性を射影するように設定されている場合、すべてのデータはローカルセカンダリインデックスから取得されるため、フェッチは必要ありません。
-
ALL_PROJECTED_ATTRIBUTES
-
インデックスにクエリを実行する場合のみ使用できます。インデックスに投射されたすべての属性を取得します。インデックスがすべての属性を投射するように設定されている場合、この返り値は
ALL_ATTRIBUTES
を指定した場合と同等になります。 SPECIFIC_ATTRIBUTES
-
projection
のexpression
にリストされている属性のみを返します。この戻り値は、Select
の値を指定せずにprojection
のexpression
を指定するのと同じです。
-
-
totalSegments
-
並列スキャンが実行されるまでにテーブルを分割するセグメントの数です。このフィールドはオプションですが、
segment
を指定した場合には指定する必要があります。 -
segment
-
並列スキャンの実行時のこの処理でのテーブルセグメントです。このフィールドはオプションですが、
totalSegments
を指定した場合には指定する必要があります。 projection
-
DynamoDB オペレーションから返される属性を指定するために使用されるプロジェクション。プロジェクションの詳細については、「プロジェクション」を参照してください。このフィールドはオプションです。
DynamoDB スキャンによって返される結果は、GraphQL とJSONプリミティブタイプに自動的に変換され、マッピングコンテキスト () で使用できます$context.result
。
DynamoDB の型変換の詳細については、「型システム (リクエストマッピング)」を参照してください。
レスポンスマッピングテンプレートの詳細については、「リゾルバーのマッピングテンプレートの概要」を参照してください。
結果は以下の構造を持ちます。
{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10 }
各フィールドの定義は以下のようになります。
-
items
-
DynamoDB スキャンにより返された項目を含むリストです。
-
nextToken
-
より多くの結果がある場合、 には、別のリクエストで使用できるページ分割トークン
nextToken
が含まれています。 は、DynamoDB から返されたページ分割トークンを AWS AppSync 暗号化して難読化します。これにより、テーブルデータが誤って呼び出し元に漏えいされるのを防ぎます。また、これらのページ分割トークンは異なるリゾルバー間では使用できません。 -
scannedCount
-
フィルタ式 (ある場合) が適用される前に、DynamoDB により取得された項目の数です。
例 1
次の例は、GraphQL クエリ: allPosts
のマッピングテンプレートです。
この例では、テーブル内のすべてのエントリが返されます。
{ "version" : "2017-02-28", "operation" : "Scan" }
例 2
次の例は、GraphQL クエリ: postsMatching(title: String!)
のマッピングテンプレートです。
この例では、タイトルが title
引数で始まるテーブル内のすべてのエントリが返されます。
{ "version" : "2017-02-28", "operation" : "Scan", "filter" : { "expression" : "begins_with(title, :title)", "expressionValues" : { ":title" : $util.dynamodb.toDynamoDBJson($context.arguments.title) }, } }
DynamoDB の詳細についてはScan
API、DynamoDB APIドキュメント を参照してください。