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.ReturnValueAllOldl'Item eliminato torna inout.Attributes; una mappa vuota significa che non c'era nulla. ReturnValuesperDeleteItemsupporta soloNONE(predefinito) eALL_OLD— le opzioniALL_NEW/UPDATED_*appartengono aUpdateItem.- 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 conerrors.As. DeleteItemrimuove un Item per chiamata. Non esiste un'API "delete all" — per svuotare una tabella, itera le chiavi conScane 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
- DynamoDB DeleteItem in Java — la stessa eliminazione con AWS SDK for Java 2.x.
- DynamoDB PutItem in Go — il lato scrittura della stessa chiave.
- Espressioni di condizione DynamoDB — proteggi le eliminazioni con
attribute_existse controlli sui valori. - DynamoDB ConditionalCheckFailedException — cosa solleva un'eliminazione condizionale fallita, e quando è prevista.
References
- DeleteItem — Amazon DynamoDB API Reference
- Use DeleteItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- dynamodb package — AWS SDK for Go v2 (pkg.go.dev)
- dynamodb/types package — AWS SDK for Go v2 (pkg.go.dev)
- Condition expressions — Amazon DynamoDB Developer Guide
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.