DynamoDB DeleteItem in Go (AWS SDK v2)
DeleteItem entfernt ein einzelnes Item über seinen vollständigen Primärschlüssel. Im AWS SDK for Go v2 rufst du client.DeleteItem mit einem dynamodb.DeleteItemInput auf; mit types.ReturnValueAllOld sagt dir die Antwort, ob tatsächlich etwas gelöscht wurde.
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)
}
}Erklärung
Key— muss jedes Primärschlüssel-Attribut enthalten: den Partitionsschlüssel allein bei einem einfachen Schlüssel oder Partitions- und Sortierschlüssel bei einem zusammengesetzten Schlüssel.- Delete ist idempotent — einen Schlüssel zu löschen, der nicht existiert, ist trotzdem ein Erfolg (kein Fehler). Mit
ReturnValues: types.ReturnValueAllOldkommt das gelöschte Item inout.Attributeszurück; eine leere Map bedeutet, dass nichts da war. ReturnValuesfürDeleteItemunterstützt nurNONE(Standard) undALL_OLD— dieALL_NEW/UPDATED_*-Optionen gehören zuUpdateItem.- Bedingtes Löschen — füge eine
ConditionExpressionhinzu (z. B.attribute_exists(Artist), um bei einem fehlenden Item zu scheitern, oder einen Wert-Guard); eine fehlgeschlagene Bedingung gibt eine*types.ConditionalCheckFailedExceptionzurück, gematcht miterrors.As. DeleteItementfernt ein Item pro Aufruf. Es gibt keine "Alles löschen"-API — um eine Tabelle zu leeren, iteriere Schlüssel mitScanund batche die Löschungen, oder verwerfe die Tabelle und erstelle sie neu.
Visuell erledigen
Die Löschung mit einer Bedingung absichern? Der DynamoDB Expression Builder stellt die ConditionExpression und die Name-/Wert-Maps für dich zusammen.
Um Items aus einer GUI zu löschen — Zeilen auswählen, bestätigen, fertig, mit dem generierten Code einen Klick entfernt — lade DynoTable herunter.
Verwandte Beispiele
- DynamoDB DeleteItem in Java — dieselbe Löschung mit AWS SDK for Java 2.x.
- DynamoDB PutItem in Go — die Schreibseite desselben Schlüssels.
- DynamoDB-Bedingungsausdrücke — Löschungen mit
attribute_existsund Wertprüfungen absichern. - DynamoDB ConditionalCheckFailedException — was eine fehlgeschlagene bedingte Löschung wirft und wann sie erwartet wird.
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
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.