DynamoDB DeleteItem em Go (AWS SDK v2)

DeleteItem remove um único item pela sua chave primária completa. No AWS SDK for Go v2 você chama client.DeleteItem com um dynamodb.DeleteItemInput; com types.ReturnValueAllOld a resposta informa se algo foi de fato excluído.

Code

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/config"
	"github.com/aws/aws-sdk-go-v2/service/dynamodb"
	"github.com/aws/aws-sdk-go-v2/service/dynamodb/types"
)

func main() {
	ctx := context.TODO()
	cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("us-east-1"))
	if err != nil {
		log.Fatalf("load config: %v", err)
	}
	client := dynamodb.NewFromConfig(cfg)

	out, err := client.DeleteItem(ctx, &dynamodb.DeleteItemInput{
		TableName: aws.String("Music"),
		Key: map[string]types.AttributeValue{
			"Artist":    &types.AttributeValueMemberS{Value: "Arturo Sandoval"},
			"SongTitle": &types.AttributeValueMemberS{Value: "Cubano Chant"},
		},
		ReturnValues: types.ReturnValueAllOld,
	})
	if err != nil {
		log.Fatalf("delete item: %v", err)
	}

	if len(out.Attributes) == 0 {
		fmt.Println("No item with that key existed")
	} else {
		fmt.Println("Deleted:", out.Attributes)
	}
}

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: types.ReturnValueAllOld o item excluído volta em out.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 uma verificação de valor); uma condição falha retorna um *types.ConditionalCheckFailedException, correspondido com errors.As.
  • 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.