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)
}
}说明
Key— 必须包含每个主键属性:简单键仅需分区键,复合键则需分区键和排序键。- 删除是幂等的 — 删除一个不存在的键仍是成功(无错误)。配合
ReturnValues: types.ReturnValueAllOld,被删除的项目会在out.Attributes中返回;空映射意味着那里本来什么都没有。 DeleteItem的ReturnValues仅支持NONE(默认)和ALL_OLD—ALL_NEW/UPDATED_*选项属于UpdateItem。- 条件删除 — 加上一个
ConditionExpression(例如attribute_exists(Artist)以在项目缺失时失败,或做一次值守卫);失败的条件会返回一个*types.ConditionalCheckFailedException,用errors.As匹配。 DeleteItem每次调用移除一个项目。没有"删除全部"的 API——要清空一张表,请用Scan迭代键并批量删除,或删除表后重新创建。
可视化操作
用条件来保护删除?DynamoDB Expression Builder 会替你组装 ConditionExpression 以及名称/值映射。
想在 GUI 中删除项目——选中行、确认、完成,生成的代码只需一次点击即可获得——请下载 DynoTable。
相关示例
- Java 中的 DynamoDB DeleteItem — 用 AWS SDK for Java 2.x 完成同样的删除。
- Go 中的 DynamoDB PutItem — 同一个键的写入侧。
- DynamoDB 条件表达式 — 用
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
Last verified 2026-07-13 against the official AWS documentation linked above.