Go (AWS SDK v2) での DynamoDB DeleteItem

DeleteItem完全なプライマリキーによって単一のアイテムを削除します。AWS SDK for Go v2 では、dynamodb.DeleteItemInput を指定して client.DeleteItem を呼び出します。types.ReturnValueAllOld を使うと、レスポンスは実際に何かが削除されたかどうかを教えてくれます。

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

Explanation

  • Keyすべてのプライマリキー属性を含める必要があります。シンプルキーならパーティションキーのみ、複合キーならパーティションキーソートキーの両方です。
  • 削除はべき等 — 存在しないキーを削除しても成功します(エラーなし)。ReturnValues: types.ReturnValueAllOld を使うと、削除されたアイテムが out.Attributes で返ってきます。空のマップは、そこに何もなかったことを意味します。
  • DeleteItemReturnValuesNONE(デフォルト)と ALL_OLD のみをサポートしますALL_NEW/UPDATED_* オプションは UpdateItem のものです。
  • 条件付き削除ConditionExpression(例: 存在しないアイテムで失敗させる attribute_exists(Artist)、または値ガード)を追加します。失敗した条件は *types.ConditionalCheckFailedException を返し、errors.As で照合します。
  • DeleteItem1回の呼び出しにつき1アイテムを削除します。「すべて削除」の API はありません。テーブルを空にするには、Scan でキーを反復して削除をバッチ処理するか、テーブルを削除して作り直します。

Do it visually

削除を条件でガードしていますか?DynamoDB Expression BuilderConditionExpression と名前/値のマップを代わりに組み立てます。

GUI からアイテムを削除するには(行を選択し、確認し、完了。生成コードはワンクリックで手に入ります)、DynoTable をダウンロードしてください。

References

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。