스캔 - AWS AppSync GraphQL

스캔

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에는 다른 요청에 사용할 수 있는 페이지 매김 토큰이 포함됩니다. AppSync에서는 DynamoDB에서 반환된 페이지 매김 토큰을 암호화하고 난독화합니다. 따라서 테이블 데이터가 호출자에게 실수로 유출되는 일이 없습니다. 또한 페이지 매김 토큰은 여러 해석기 간에 사용할 수 없습니다.

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 문서를 참조하십시오.