BatchPutItem
BatchPutItem
요청 객체를 사용하면 AWS AppSync DynamoDB 함수에 DynamoDB에 BatchWriteItem
요청을 하여 잠재적으로 여러 테이블에 걸쳐 여러 항목을 입력하도록 지시할 수 있습니다. 이 요청 객체에 대해 다음을 지정해야 합니다.
-
항목을 저장할 테이블 이름
-
각 테이블에 저장할 전체 항목
DynamoDB BatchWriteItem
한도가 적용되고 표현식 없음이 제공될 수 있습니다.
BatchPutItem
요청 객체는 다음과 같은 구조입니다.
type DynamoDBBatchPutItemRequest = { operation: 'BatchPutItem'; tables: { [tableName: string]: { [key: string]: any}[]; }; };
필드는 다음과 같이 정의됩니다.
BatchPutItem 필드
-
operation
-
수행할 DynamoDB 작업입니다.
BatchPutItem
DynamoDB 작업을 수행하려면 이 값을BatchPutItem
으로 설정해야 합니다. 이 값은 필수입니다. -
tables
-
항목을 넣을 DynamoDB 테이블입니다. 각 테이블 항목은 이 특정 테이블에 삽입할 DynamoDB 항목 목록을 나타냅니다. 테이블이 하나 이상 제공되어야 합니다. 이 값은 필수입니다.
기억해야 할 내용:
-
성공하면, 완전히 삽입된 항목이 응답에서 반환됩니다.
-
테이블에 항목이 삽입되지 못하면 해당 테이블의 데이터 블록에 null 요소가 표시됩니다.
-
삽입된 항목은 요청 객체 내에 제공된 순서에 따라 테이블별로 정렬됩니다.
-
BatchPutItem
내부의 각Put
명령은 원자성이지만 배치는 부분적으로 처리될 수 있습니다. 오류로 인해 배치가 부분적으로 처리된 경우 처리되지 않은 키는 unprocessedKeys 블록 내에 호출 결과의 일부로 반환됩니다. -
BatchPutItem
은 25개의 항목으로 제한됩니다. -
충돌 감지와 함께 사용할 때 이 작업은 지원되지 않습니다. 두 가지를 동시에 사용하면 오류가 발생할 수 있습니다.
다음은 함수 요청 핸들러 예시입니다.
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId, name, title } = ctx.args; return { operation: 'BatchPutItem', tables: { authors: [util.dynamodb.toMapValues({ authorId, name })], posts: [util.dynamodb.toMapValues({ authorId, postId, title })], }, }; }
ctx.result
에서 사용할 수 있는 호출 결과는 다음과 같습니다.
{ "data": { "authors": [ null ], "posts": [ // Was inserted { "authorId": "a1", "postId": "p2", "title": "title" } ] }, "unprocessedItems": { "authors": [ // This item was not processed due to an error { "authorId": "a1", "name": "a1_name" } ], "posts": [] } }
ctx.error
에는 오류에 대한 세부 정보가 포함됩니다. 키 data, unprocessedItems 및 요청 객체에서 제공된 각 테이블 키는 호출 결과에 표시됩니다. 삽입된 항목은 데이터 블록에 나타납니다. 처리되지 않은 항목은 데이터 블록 내에서 null로 표시되고 unprocessedItems 블록 내에 배치됩니다.