翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
同期
Sync リクエストマッピングドキュメントを使用すると、DynamoDB テーブルからすべての結果を取得し、最後のクエリ (差分更新) 以降に変更されたデータのみを受け取ることができます。 Syncリクエストは、バージョン管理された DynamoDB データソースに対してのみ実行できます。以下を指定することができます。
- 
            結果を除外するフィルタ 
- 
            返す項目の数 
- 
            ページ分割トークン 
- 
            最後の Syncオペレーションが開始された日時
Sync マッピングドキュメントの構造は次のとおりです。
{ "version" : "2018-05-29", "operation" : "Sync", "basePartitionKey": "Base Tables PartitionKey", "deltaIndexName": "delta-index-name", "limit" : 10, "nextToken" : "aPaginationToken", "lastSync" : 1550000000000, "filter" : { ... } }
各フィールドの定義は以下のようになります。
Sync フィールド
- 
                        version
- 
                        テンプレート定義のバージョンです。現在、 2018-05-29のみがサポートされています。この値は必須です。
- 
                        operation
- 
                        実行する DynamoDB の処理。 Syncの処理を実行するには、これにSyncを設定する必要があります。この値は必須です。
- 
                        filter
- 
                        DynamoDB からの結果が返される前に、その結果をフィルタリングするために使用するフィルタです。フィルタの詳細については、「フィルタ」を参照してください。このフィールドはオプションです。 
- 
                        limit
- 
                        一度に評価する項目の最大数です。このフィールドはオプションです。省略した場合、デフォルトの制限は 100項目に設定されます。このフィールドの最大値は1000項目です。
- 
                        nextToken
- 
                        前のクエリを継続するためのページ分割トークンです。これは前のクエリから取得されます。このフィールドはオプションです。 
- 
                        lastSync
- 
                        最後に成功した Syncオペレーションが開始されたエポックミリ秒単位の時刻。指定すると、lastSync以降に変更された項目のみが返されます。このフィールドはオプションです。最初のSyncオペレーションからすべてのページを取得した後にのみ入力する必要があります。省略した場合は、ベーステーブルの結果が返されます。それ以外の場合は、差分テーブルの結果が返されます。
- basePartitionKey
- 
                        Syncオペレーションを実行する際に使用されるベーステーブルのパーティションキー。このフィールドにより、テーブルがカスタムパーティションキーを使用している場合にSyncオペレーションを実行できます。これはオプションのフィールドです。
- deltaIndexName
- 
                        Syncオペレーションに使用されるインデックス。このインデックスは、テーブルがカスタムパーティションキーを使用する場合に、デルタストアテーブル全体でSyncオペレーション作を有効にするために必要です。Syncオペレーションは GSI (gsi_ds_pkとgsi_ds_skで作成) 上で実行されます。このフィールドはオプションです。
DynamoDB 同期により返された結果が自動的に GraphQL プリミティブ型と JSON プリミティブ型に変換され、マッピングコンテキスト ($context.result) で参照できます。
DynamoDB の型変換の詳細については、「型システム (リクエストマッピング)」を参照してください。
レスポンスマッピングテンプレートの詳細については、「リゾルバーのマッピングテンプレートの概要」を参照してください。
結果は以下の構造を持ちます。
{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10, startedAt = 1550000000000 }
各フィールドの定義は以下のようになります。
- 
               items
- 
               同期により返された項目を含むリストです。 
- 
               nextToken
- 
               さらに結果がある場合、 には別のリクエストで使用できるページ分割トークン nextTokenが含まれています。 AWS AppSync は、DynamoDB から返されたページ分割トークンを暗号化して難読化します。これにより、テーブルデータが誤って呼び出し元に漏えいされるのを防ぎます。また、これらのページ分割トークンは異なるリゾルバー間では使用できません。
- 
               scannedCount
- 
               フィルタ式 (ある場合) が適用される前に、DynamoDB により取得された項目の数です。 
- 
               startedAt
- 
               エポックミリ秒単位の時刻ですが、同期オペレーションが開始されれば、ローカルに保存して別のリクエストで lastSyncの引数として使用することができます。ページ分割トークンがリクエストに含まれている場合、この値は、結果の最初のページのリクエストによって返されたものと同じになります。
例
次の例は、GraphQL クエリ: syncPosts(nextToken: String, lastSync: AWSTimestamp) のマッピングテンプレートです。
この例では、lastSync を省略すると、ベーステーブルのすべてのエントリが返されます。lastSync が指定されている場合は、lastSync 以降に変更された差分同期テーブルのエントリのみが返されます。
{ "version" : "2018-05-29", "operation" : "Sync", "limit": 100, "nextToken": $util.toJson($util.defaultIfNull($ctx.args.nextToken, null)), "lastSync": $util.toJson($util.defaultIfNull($ctx.args.lastSync, null)) }