BatchDeleteItem - AWS AppSync GraphQL

BatchDeleteItem

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

  • 항목을 삭제할 테이블 이름

  • 각 테이블에서 삭제할 항목의 키

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

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

type DynamoDBBatchDeleteItemRequest = { operation: 'BatchDeleteItem'; tables: { [tableName: string]: { [key: string]: any }[]; }; };

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

BatchDeleteItem 필드

operation

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

tables

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

기억해야 할 내용:

  • DeleteItem 작업과 달리 완전히 삭제된 항목은 응답에서 반환되지 않습니다. 전달된 키만 반환됩니다.

  • 테이블에서 항목을 삭제하지 못하면 해당 테이블의 데이터 블록에 null 요소가 나타납니다.

  • 호출 결과는 요청 객체 내에 제공된 순서에 따라 테이블별로 정렬됩니다.

  • BatchDeleteItem 내부의 각 Delete 명령은 원자성입니다. 그러나 배치는 부분적으로 처리될 수 있습니다. 오류로 인해 배치가 부분적으로 처리된 경우 처리되지 않은 키는 unprocessedKeys 블록 내에 호출 결과의 일부로 반환됩니다.

  • BatchDeleteItem은 25개의 키로 제한됩니다.

  • 충돌 감지와 함께 사용할 때 이 작업은 지원되지 않습니다. 두 가지를 동시에 사용하면 오류가 발생할 수 있습니다.

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

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

ctx.result에서 사용할 수 있는 호출 결과는 다음과 같습니다.

{ "data": { "authors": [null], "posts": [ // Was deleted { "authorId": "a1", "postId": "p2" } ] }, "unprocessedKeys": { "authors": [ // This key was not processed due to an error { "authorId": "a1" } ], "posts": [] } }

ctx.error에는 오류에 대한 세부 정보가 포함됩니다. 함수 요청 객체에 제공된 키 data, unprocessedKeys 및 각 테이블 키는 간접 호출 결과에 존재하는 것이 보장됩니다. 삭제된 항목은 데이터 블록에 나타납니다. 처리되지 않은 항목은 데이터 블록 내에서 null로 표시되고 unprocessedKeys 블록 내에 배치됩니다.