DynamoDB DeleteItem en Java (AWS SDK v2)

DeleteItem elimina un único item por su clave primaria completa. En AWS SDK para Java 2.x construyes un DeleteItemRequest y llamas a deleteItem sobre un DynamoDbClient; con ReturnValue.ALL_OLD la respuesta te indica si realmente se eliminó algo.

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

Explicación

  • key — debe incluir cada atributo de la clave primaria: solo la clave de partición para una clave simple, o la clave de partición y la de ordenación para una clave compuesta.
  • El borrado es idempotente — borrar una clave que no existe sigue siendo un éxito (sin error). Con returnValues(ReturnValue.ALL_OLD) el item eliminado vuelve en response.attributes(); un mapa vacío significa que no había nada.
  • ReturnValues para DeleteItem solo admite NONE (por defecto) y ALL_OLD — las opciones ALL_NEW/UPDATED_* pertenecen a UpdateItem.
  • Borrado condicional — añade un conditionExpression (por ejemplo, attribute_exists(Artist) para fallar ante un item ausente, o Awards = :zero para proteger sobre un valor); una condición fallida lanza ConditionalCheckFailedException.
  • DeleteItem elimina un item por llamada. No hay una API de "borrar todo" — para vaciar una tabla, itera las claves con Scan y agrupa los borrados en lotes, o elimina y recrea la tabla.

Hazlo visualmente

¿Protegiendo el borrado con una condición? El DynamoDB Expression Builder monta por ti el ConditionExpression y los mapas de nombres/valores.

Para eliminar items desde una interfaz gráfica — selecciona filas, confirma, listo, con el código generado a un clic — descarga DynoTable.

Ejemplos relacionados

References

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.