동기화
Sync 요청 객체를 사용하면 DynamoDB 테이블에서 모든 결과를 가져온 다음, 마지막 쿼리(델타 업데이트) 이후에 변경된 데이터만 수신할 수 있습니다. Sync 요청은 버전이 지정된 DynamoDB 데이터 소스에만 수행할 수 있습니다. 다음을 지정할 수 있습니다.
-
결과를 제외하는 필터
-
반환할 항목 수
-
페이지 매김 토큰
-
마지막
Sync작업이 시작된 경우
Sync 요청 객체는 다음과 같은 구조입니다.
type DynamoDBSyncRequest = { operation: 'Sync'; basePartitionKey?: string; deltaIndexName?: string; limit?: number; nextToken?: string; lastSync?: number; filter?: { expression: string; expressionNames?: { [key: string]: string }; expressionValues?: { [key: string]: any }; }; };
필드는 다음과 같이 정의됩니다.
Sync 필드
-
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 유형 변환에 대한 자세한 내용은 유형 시스템(응답 매핑)을 참조하세요.
JavaScript 해석기에 대한 자세한 내용은 JavaScript 해석기 개요를 참조하세요.
결과의 구조는 다음과 같습니다.
{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10, startedAt = 1550000000000 }
필드는 다음과 같이 정의됩니다.
-
items -
동기화에서 반환하는 항목이 포함된 목록.
-
nextToken -
더 많은 결과가 있을 수 있는 경우
nextToken에는 다른 요청에 사용할 수 있는 페이지 매김 토큰이 포함됩니다. AppSync에서는 DynamoDB에서 반환된 페이지 매김 토큰을 암호화하고 난독화합니다. 따라서 테이블 데이터가 호출자에게 실수로 유출되는 일이 없습니다. 또한 페이지 매김 토큰은 여러 함수 또는 해석기 간에 사용할 수 없습니다. -
scannedCount -
필터 표현식(있는 경우)을 적용하기 전에 DynamoDB에서 검색한 항목 수.
-
startedAt -
로컬로 저장하고 다른 요청에
lastSync인수로 사용할 수 있는 동기화 작업이 시작된 시간(Epoch 밀리초)입니다. 페이지 매김 토큰이 요청에 포함된 경우, 이 값은 결과의 첫 페이지에 대한 요청에 의해 반환된 값과 동일합니다.
예시
다음 예제는 GraphQL 쿼리 syncPosts(nextToken: String, lastSync: AWSTimestamp)을 위한 함수 요청 핸들러입니다.
이 예에서 lastSync가 생략된 경우, 기본 테이블의 모든 항목이 반환됩니다. lastSync가 제공된 경우 lastSync 이후 변경된 델타 동기화 테이블의 항목만 반환됩니다.
export function request(ctx) { const { nextToken, lastSync } = ctx.args; return { operation: 'Sync', limit: 100, nextToken, lastSync }; }