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で返ってきます。空のマップは、そこに何もなかったことを意味します。 DeleteItemのReturnValuesはNONE(デフォルト)とALL_OLDのみをサポートします —ALL_NEW/UPDATED_*オプションはUpdateItemのものです。- 条件付き削除 —
ConditionExpression(例: 存在しないアイテムで失敗させるattribute_exists(Artist)、または値ガード)を追加します。失敗した条件は*types.ConditionalCheckFailedExceptionを返し、errors.Asで照合します。 DeleteItemは1回の呼び出しにつき1アイテムを削除します。「すべて削除」の API はありません。テーブルを空にするには、Scanでキーを反復して削除をバッチ処理するか、テーブルを削除して作り直します。
Do it visually
削除を条件でガードしていますか?DynamoDB Expression Builder が ConditionExpression と名前/値のマップを代わりに組み立てます。
GUI からアイテムを削除するには(行を選択し、確認し、完了。生成コードはワンクリックで手に入ります)、DynoTable をダウンロードしてください。
Related examples
- DynamoDB DeleteItem in Java — AWS SDK for Java 2.x による同じ削除。
- DynamoDB PutItem in Go — 同じキーの書き込み側。
- DynamoDB condition expressions —
attribute_existsや値チェックで削除をガードする。 - DynamoDB ConditionalCheckFailedException — 失敗した条件付き削除が投げるものと、それが想定される場面。
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
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。