Scan - AWS AppSync

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

projectionexpression にリストされている属性のみを返します。この戻り値は、Select の値を指定せずに projectionexpression を指定するのと同じです。

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 の詳細についてはScanAPI、DynamoDB APIドキュメント を参照してください。