DynamoDB DeleteItem en Go (AWS SDK v2)

DeleteItem elimina un único item por su clave primaria completa. En AWS SDK para Go v2 llamas a client.DeleteItem con un dynamodb.DeleteItemInput; con types.ReturnValueAllOld la respuesta te indica si realmente se eliminó algo.

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

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: types.ReturnValueAllOld el item eliminado vuelve en out.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 una guarda de valor); una condición fallida devuelve un *types.ConditionalCheckFailedException, emparejado con errors.As.
  • 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.