DynamoDB DeleteItem en Java (AWS SDK v2)

DeleteItem supprime un seul élément par sa clé primaire complète. Dans l'AWS SDK for Java 2.x tu construis un DeleteItemRequest et appelles deleteItem sur un DynamoDbClient ; avec ReturnValue.ALL_OLD la réponse t'indique si quelque chose a réellement été supprimé.

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

Explication

  • key — doit inclure chaque attribut de clé primaire : la clé de partition seule pour une clé simple, ou la clé de partition et la clé de tri pour une clé composite.
  • La suppression est idempotente — supprimer une clé qui n'existe pas reste un succès (pas d'erreur). Avec returnValues(ReturnValue.ALL_OLD) l'élément supprimé revient dans response.attributes() ; une carte vide signifie qu'il n'y avait rien.
  • ReturnValues pour DeleteItem ne prend en charge que NONE (par défaut) et ALL_OLD — les options ALL_NEW/UPDATED_* appartiennent à UpdateItem.
  • Suppression conditionnelle — ajoute un conditionExpression (par ex. attribute_exists(Artist) pour échouer sur un élément manquant, ou Awards = :zero pour garder sur une valeur) ; une condition échouée lève ConditionalCheckFailedException.
  • DeleteItem supprime un élément par appel. Il n'y a pas d'API « tout supprimer » — pour vider une table, itère les clés avec Scan et regroupe les suppressions en lot, ou supprime et recrée la table.

À faire visuellement

Tu protèges la suppression avec une condition ? Le DynamoDB Expression Builder assemble le ConditionExpression et les cartes de noms/valeurs pour toi.

Pour supprimer des éléments depuis une interface graphique — sélectionne des lignes, confirme, terminé, avec le code généré à un clic — télécharge DynoTable.

Exemples liés

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.