Java(AWS SDK v2)에서의 DynamoDB DeleteItem

DeleteItem전체 기본 키로 단일 항목을 제거합니다. AWS SDK for Java 2.x에서는 DeleteItemRequest를 빌드하고 DynamoDbClient에서 deleteItem을 호출하며, ReturnValue.ALL_OLD를 사용하면 응답이 실제로 무언가 삭제되었는지 알려줍니다.

Code

import java.util.HashMap;
import java.util.Map;

import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;

public class DeleteItemExample {
    public static void main(String[] args) {
        try (DynamoDbClient ddb = DynamoDbClient.builder()
                .region(Region.US_EAST_1)
                .build()) {

            Map<String, AttributeValue> key = new HashMap<>();
            key.put("Artist", AttributeValue.builder().s("Arturo Sandoval").build());
            key.put("SongTitle", AttributeValue.builder().s("Cubano Chant").build());

            DeleteItemRequest request = DeleteItemRequest.builder()
                    .tableName("Music")
                    .key(key)
                    .returnValues(ReturnValue.ALL_OLD)
                    .build();

            DeleteItemResponse response = ddb.deleteItem(request);
            if (response.attributes().isEmpty()) {
                System.out.println("No item with that key existed");
            } else {
                System.out.println("Deleted: " + response.attributes());
            }
        } catch (DynamoDbException e) {
            System.err.println(e.getMessage());
        }
    }
}

Explanation

  • key모든 기본 키 속성을 포함해야 합니다. 단순 키는 파티션 키만, 복합 키는 파티션 키 정렬 키를 포함해야 합니다.
  • Delete는 멱등적 — 존재하지 않는 키를 삭제해도 여전히 성공입니다(오류 없음). returnValues(ReturnValue.ALL_OLD)를 사용하면 삭제된 항목이 response.attributes()로 반환됩니다. 빈 맵은 아무것도 없었다는 뜻입니다.
  • DeleteItemReturnValuesNONE(기본값)과 ALL_OLD만 지원ALL_NEW/UPDATED_* 옵션은 UpdateItem에 속합니다.
  • 조건부 삭제conditionExpression(예: 항목이 없을 때 실패시키는 attribute_exists(Artist), 또는 값을 가드하는 Awards = :zero)을 추가하세요. 실패한 조건은 ConditionalCheckFailedException을 던집니다.
  • DeleteItem호출당 한 항목을 제거합니다. "전부 삭제" API는 없습니다 — 테이블을 비우려면 Scan으로 키를 순회해 삭제를 배치하거나, 테이블을 삭제하고 다시 생성하세요.

Do it visually

조건으로 삭제를 가드하고 계신가요? DynamoDB Expression BuilderConditionExpression과 이름/값 맵을 대신 조립합니다.

GUI에서 항목을 삭제하려면 — 행 선택, 확인, 완료, 생성된 코드는 클릭 한 번 거리에 — DynoTable을 다운로드하세요.

References

Last verified 2026-07-13 against the official AWS documentation linked above.

Console 없이 DynamoDB 작업하기

DynoTable은 DynamoDB를 위한 빠른 데스크톱 클라이언트입니다 — 테이블을 탐색하고, SQL 스타일 쿼리를 실행하고, 항목을 로컬에서 편집하세요.