DynamoDB DeleteItem em Java (AWS SDK v2)

DeleteItem remove um único item pela sua chave primária completa. No AWS SDK for Java 2.x você constrói um DeleteItemRequest e chama deleteItem em um DynamoDbClient; com ReturnValue.ALL_OLD a resposta informa se algo foi de fato excluído.

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

Explicação

  • key — deve incluir todos os atributos da chave primária: apenas a chave de partição para uma chave simples, ou chave de partição e chave de classificação para uma chave composta.
  • A exclusão é idempotente — excluir uma chave que não existe ainda é um sucesso (sem erro). Com returnValues(ReturnValue.ALL_OLD) o item excluído volta em response.attributes(); um mapa vazio significa que não havia nada ali.
  • ReturnValues para DeleteItem suporta apenas NONE (padrão) e ALL_OLD — as opções ALL_NEW/UPDATED_* pertencem ao UpdateItem.
  • Exclusão condicional — adicione uma conditionExpression (por exemplo, attribute_exists(Artist) para falhar em um item ausente, ou Awards = :zero para proteger com base em um valor); uma condição falha lança ConditionalCheckFailedException.
  • DeleteItem remove um item por chamada. Não existe uma API de "excluir tudo" — para esvaziar uma tabela, itere as chaves com Scan e agrupe as exclusões, ou apague e recrie a tabela.

Faça visualmente

Protegendo a exclusão com uma condição? O DynamoDB Expression Builder monta a ConditionExpression e os mapas de nome/valor por você.

Para excluir itens numa GUI — selecione linhas, confirme, pronto, com o código gerado a um clique de distância — baixe o DynoTable.

Exemplos relacionados

References

Última verificação em 2026-07-13 contra a documentação oficial da AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.