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.ReturnValueAllOld kommt das gelöschte Item in out.Attributes zurück; eine leere Map bedeutet, dass nichts da war.
  • ReturnValues für DeleteItem unterstützt nur NONE (Standard) und ALL_OLD — die ALL_NEW/UPDATED_*-Optionen gehören zu UpdateItem.
  • Bedingtes Löschen — füge eine ConditionExpression hinzu (z. B. attribute_exists(Artist), um bei einem fehlenden Item zu scheitern, oder einen Wert-Guard); eine fehlgeschlagene Bedingung gibt eine *types.ConditionalCheckFailedException zurück, gematcht mit errors.As.
  • DeleteItem entfernt ein Item pro Aufruf. Es gibt keine "Alles löschen"-API — um eine Tabelle zu leeren, iteriere Schlüssel mit Scan und 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

References

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

DynoTable ist ein schneller Desktop-Client für DynamoDB — durchsuche Tabellen, führe SQL-artige Queries aus und bearbeite Items lokal.