DynamoDB DeleteItem in Java (AWS SDK v2)

DeleteItem entfernt ein einzelnes Item über seinen vollständigen Primärschlüssel. Im AWS SDK for Java 2.x baust du einen DeleteItemRequest und rufst deleteItem auf einem DynamoDbClient auf; mit ReturnValue.ALL_OLD sagt dir die Antwort, ob tatsächlich etwas gelöscht wurde.

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());
        }
    }
}

Erklärung

  • key — muss jedes Primärschlüssel-Attribut enthalten: den Partitionsschlüssel allein bei einem einfachen Schlüssel oder Partitions- und Sortierschlüssel bei einem zusammengesetzten Schlüssel.
  • Delete ist idempotent — einen Schlüssel zu löschen, der nicht existiert, ist trotzdem ein Erfolg (kein Fehler). Mit returnValues(ReturnValue.ALL_OLD) kommt das gelöschte Item in response.attributes() zurück; eine leere Map bedeutet, dass nichts da war.
  • ReturnValues für DeleteItem unterstützt nur NONE (Standard) und ALL_OLD — die ALL_NEW/UPDATED_*-Optionen gehören zu UpdateItem.
  • Bedingtes Löschen — füge eine conditionExpression hinzu (z. B. attribute_exists(Artist), um bei einem fehlenden Item zu scheitern, oder Awards = :zero, um auf einen Wert zu prüfen); eine fehlgeschlagene Bedingung wirft ConditionalCheckFailedException.
  • DeleteItem entfernt ein Item pro Aufruf. Es gibt keine "Alles löschen"-API — um eine Tabelle zu leeren, iteriere Schlüssel mit Scan und batche die Löschungen, oder verwerfe die Tabelle und erstelle sie neu.

Visuell erledigen

Die Löschung mit einer Bedingung absichern? Der DynamoDB Expression Builder stellt die ConditionExpression und die Name-/Wert-Maps für dich zusammen.

Um Items aus einer GUI zu löschen — Zeilen auswählen, bestätigen, fertig, mit dem generierten Code einen Klick entfernt — lade DynoTable herunter.

Verwandte Beispiele

References

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

DynoTable ist ein schneller Desktop-Client für DynamoDB — durchsuche Tabellen, führe SQL-artige Queries aus und bearbeite Items lokal.