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모든 기본 키 속성을 포함해야 합니다. 단순 키는 파티션 키만, 복합 키는 파티션 키 정렬 키를 포함해야 합니다.
  • Delete는 멱등적 — 존재하지 않는 키를 삭제해도 여전히 성공입니다(오류 없음). ReturnValues: types.ReturnValueAllOld를 사용하면 삭제된 항목이 out.Attributes로 반환됩니다. 빈 맵은 아무것도 없었다는 뜻입니다.
  • DeleteItemReturnValuesNONE(기본값)과 ALL_OLD만 지원ALL_NEW/UPDATED_* 옵션은 UpdateItem에 속합니다.
  • 조건부 삭제ConditionExpression(예: 항목이 없을 때 실패시키는 attribute_exists(Artist), 또는 값 가드)을 추가하세요. 실패한 조건은 errors.As로 매칭되는 *types.ConditionalCheckFailedException을 반환합니다.
  • DeleteItem호출당 한 항목을 제거합니다. "전부 삭제" API는 없습니다 — 테이블을 비우려면 Scan으로 키를 순회해 삭제를 배치하거나, 테이블을 삭제하고 다시 생성하세요.

Do it visually

조건으로 삭제를 가드하고 계신가요? DynamoDB Expression BuilderConditionExpression과 이름/값 맵을 대신 조립합니다.

GUI에서 항목을 삭제하려면 — 행 선택, 확인, 완료, 생성된 코드는 클릭 한 번 거리에 — DynoTable을 다운로드하세요.

References

Last verified 2026-07-13 against the official AWS documentation linked above.

Console 없이 DynamoDB 작업하기

DynoTable은 DynamoDB를 위한 빠른 데스크톱 클라이언트입니다 — 테이블을 탐색하고, SQL 스타일 쿼리를 실행하고, 항목을 로컬에서 편집하세요.