TransactGetItems - AWS AppSync GraphQL

TransactGetItems

TransactGetItems 요청 객체를 사용하면 AWS AppSync DynamoDB 함수에 DynamoDB에 TransactGetItems 요청을 하여 잠재적으로 여러 테이블에 걸쳐 여러 항목을 검색하도록 지시할 수 있습니다. 이 요청 객체에 대해 다음을 지정해야 합니다.

  • 항목을 가져올 각 요청 항목의 테이블 이름

  • 각 테이블에서 가져올 각 요청 항목의 키

DynamoDB TransactGetItems 한도가 적용되고 표현식 없음이 제공될 수 있습니다.

TransactGetItems 요청 객체는 다음과 같은 구조입니다.

type DynamoDBTransactGetItemsRequest = { operation: 'TransactGetItems'; transactItems: { table: string; key: { [key: string]: any }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }[]; }; };

필드는 다음과 같이 정의됩니다.

TransactGetItems 필드

operation

수행할 DynamoDB 작업입니다. TransactGetItems DynamoDB 작업을 수행하려면 이 값을 TransactGetItems으로 설정해야 합니다. 이 값은 필수입니다.

transactItems

포함할 요청 항목입니다. 이 값은 요청 항목의 배열입니다. 하나 이상의 요청 항목이 제공되어야 합니다. 이 transactItems 값은 필수입니다.

table

항목을 가져올 DynamoDB 테이블입니다. 이 값은 테이블 이름의 문자열입니다. 이 table 값은 필수입니다.

key

검색할 항목의 프라이머리 키를 나타내는 DynamoDB 키입니다. DynamoDB 항목은 테이블 구조에 따라 단일 해시 키 또는 해시 키와 정렬 키를 가질 수 있습니다. '입력된 값'을 지정하는 방법에 대한 자세한 내용은 유형 시스템(요청 매핑)을 참조하세요.

projection

DynamoDB 작업에서 반환할 속성을 지정하는 데 사용되는 프로젝션입니다. 프로젝션에 대한 자세한 내용은 프로젝션을 참조하세요. 이 필드는 선택 사항입니다.

기억해야 할 내용:

  • 트랜잭션이 성공하면 items 블록에서 가져오는 항목의 순서는 요청 항목의 순서와 동일합니다.

  • 트랜잭션은 전부 또는 전무 방식으로 수행됩니다. 요청 항목에 오류가 발생하면 전체 트랜잭션이 수행되지 않고 오류 세부 정보가 반환됩니다.

  • 가져올 수 없는 요청 항목은 오류가 아닙니다. 대신 해당 위치의 항목 블록에 null 요소가 나타납니다.

  • 트랜잭션의 오류가 TransactionCanceledException인 경우 cancellationReasons 블록이 채워집니다. cancellationReasons 블록 내의 취소 사유 순서는 요청 항목의 순서와 동일합니다.

  • TransactGetItems는 100개의 요청 항목으로 제한됩니다.

다음은 함수 요청 핸들러 예시입니다.

import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'TransactGetItems', transactItems: [ { table: 'posts', key: util.dynamodb.toMapValues({ postId }), }, { table: 'authors', key: util.dynamodb.toMapValues({ authorId }), }, ], }; }

트랜잭션이 성공하고 첫 번째 요청된 항목만 검색되는 경우 ctx.result에서 사용할 수 있는 호출 결과는 다음과 같습니다.

{ "items": [ { // Attributes of the first requested item "post_id": "p1", "post_title": "title", "post_description": "description" }, // Could not retrieve the second requested item null, ], "cancellationReasons": null }

첫 번째 요청 항목으로 인한 TransactionCanceledException 때문에 트랜잭션이 실패할 경우 ctx.result에서 사용할 수 있는 호출 결과는 다음과 같습니다.

{ "items": null, "cancellationReasons": [ { "type":"Sample error type", "message":"Sample error message" }, { "type":"None", "message":"None" } ] }

ctx.error에는 오류에 대한 세부 정보가 포함됩니다. 키 항목cancellationReasonsctx.result에 있습니다.