DynamoDB DeleteItem in Go (AWS SDK v2)

DeleteItem rimuove un singolo Item tramite la sua chiave primaria completa. In AWS SDK for Go v2 chiami client.DeleteItem con un dynamodb.DeleteItemInput; con types.ReturnValueAllOld la risposta ti dice se qualcosa è stato effettivamente eliminato.

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

Spiegazione

  • Key — deve includere ogni attributo della chiave primaria: la sola chiave di partizione per una chiave semplice, o chiave di partizione e chiave di ordinamento per una chiave composita.
  • Il delete è idempotente — eliminare una chiave che non esiste è comunque un successo (nessun errore). Con ReturnValues: types.ReturnValueAllOld l'Item eliminato torna in out.Attributes; una mappa vuota significa che non c'era nulla.
  • ReturnValues per DeleteItem supporta solo NONE (predefinito) e ALL_OLD — le opzioni ALL_NEW/UPDATED_* appartengono a UpdateItem.
  • Eliminazione condizionale — aggiungi una ConditionExpression (ad es. attribute_exists(Artist) per fallire su un Item mancante, o una guardia su un valore); una condizione fallita restituisce un *types.ConditionalCheckFailedException, riconosciuto con errors.As.
  • DeleteItem rimuove un Item per chiamata. Non esiste un'API "delete all" — per svuotare una tabella, itera le chiavi con Scan e raggruppa le eliminazioni in batch, oppure elimina e ricrea la tabella.

Fallo visivamente

Vuoi proteggere l'eliminazione con una condizione? Il DynamoDB Expression Builder assembla la ConditionExpression e le mappe di nomi/valori per te.

Per eliminare Item da una GUI — seleziona le righe, conferma, fatto, con il codice generato a un clic di distanza — scarica DynoTable.

Esempi correlati

References

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Lavora con DynamoDB senza la Console

DynoTable è un client desktop veloce per DynamoDB — sfoglia le tabelle, esegui query in stile SQL e modifica gli Item localmente.