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 enresponse.attributes(); un mapa vacío significa que no había nada. ReturnValuesparaDeleteItemsolo admiteNONE(por defecto) yALL_OLD— las opcionesALL_NEW/UPDATED_*pertenecen aUpdateItem.- Borrado condicional — añade un
conditionExpression(por ejemplo,attribute_exists(Artist)para fallar ante un item ausente, oAwards = :zeropara proteger sobre un valor); una condición fallida lanzaConditionalCheckFailedException. DeleteItemelimina un item por llamada. No hay una API de "borrar todo" — para vaciar una tabla, itera las claves conScany 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
- DynamoDB DeleteItem en Go — el mismo borrado con AWS SDK para Go v2.
- DynamoDB PutItem en Java — el lado de escritura de la misma clave.
- Expresiones de condición de DynamoDB — protege los borrados con
attribute_existsy comprobaciones de valor. - DynamoDB ConditionalCheckFailedException — lo que lanza un borrado condicional fallido, y cuándo se espera.
References
- DeleteItem — Amazon DynamoDB API Reference
- Use DeleteItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- DeleteItemRequest — AWS SDK for Java 2.x API Reference
- Condition expressions — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.