동기화 - AWS AppSync

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

동기화

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 작업이 시작되었던 시간(epoch 밀리초)입니다. 지정된 경우, 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 포함되어 있습니다. 는 DynamoDB 에서 반환된 페이지 매김 토큰을 AWS AppSync 암호화하고 난독화합니다. 따라서 테이블 데이터가 호출자에게 실수로 유출되는 일이 없습니다. 또한 페이지 매김 토큰은 여러 해석기 간에 사용할 수 없습니다.

scannedCount

필터 표현식(있는 경우)을 적용하기 전에 DynamoDB에서 검색한 항목 수.

startedAt

로컬로 저장하고 다른 요청에 lastSync 인수로 사용할 수 있는 동기화 작업이 시작된 시간(Epoch 밀리초)입니다. 페이지 매김 토큰이 요청에 포함된 경우, 이 값은 결과의 첫 페이지에 대한 요청에 의해 반환된 값과 동일합니다.

다음 예제는 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)) }