DynamoDB DeleteItem en Go (AWS SDK v2)

DeleteItem supprime un seul élément par sa clé primaire complète. Dans l'AWS SDK for Go v2 tu appelles client.DeleteItem avec un dynamodb.DeleteItemInput ; avec types.ReturnValueAllOld la réponse t'indique si quelque chose a réellement été supprimé.

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

Explication

  • Key — doit inclure chaque attribut de clé primaire : la clé de partition seule pour une clé simple, ou la clé de partition et la clé de tri pour une clé composite.
  • La suppression est idempotente — supprimer une clé qui n'existe pas reste un succès (pas d'erreur). Avec ReturnValues: types.ReturnValueAllOld l'élément supprimé revient dans out.Attributes ; une carte vide signifie qu'il n'y avait rien.
  • ReturnValues pour DeleteItem ne prend en charge que NONE (par défaut) et ALL_OLD — les options ALL_NEW/UPDATED_* appartiennent à UpdateItem.
  • Suppression conditionnelle — ajoute un ConditionExpression (par ex. attribute_exists(Artist) pour échouer sur un élément manquant, ou un garde-fou de valeur) ; une condition échouée renvoie un *types.ConditionalCheckFailedException, capté avec errors.As.
  • DeleteItem supprime un élément par appel. Il n'y a pas d'API « tout supprimer » — pour vider une table, itère les clés avec Scan et regroupe les suppressions en lot, ou supprime et recrée la table.

À faire visuellement

Tu protèges la suppression avec une condition ? Le DynamoDB Expression Builder assemble le ConditionExpression et les cartes de noms/valeurs pour toi.

Pour supprimer des éléments depuis une interface graphique — sélectionne des lignes, confirme, terminé, avec le code généré à un clic — télécharge DynoTable.

Exemples liés

References

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

DynoTable est un client de bureau rapide pour DynamoDB — parcours les tables, exécute des requêtes de style SQL et édite les items en local.