在 Java(AWS SDK v2)中使用 DynamoDB DeleteItem
DeleteItem 依項目的完整 primary key 移除單一項目。在 AWS SDK for Java 2.x 中,你建構一個 DeleteItemRequest 並在 DynamoDbClient 上呼叫 deleteItem;搭配 ReturnValue.ALL_OLD,回應會告訴你是否真的刪除了任何東西。
Code
import java.util.HashMap;
import java.util.Map;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
public class DeleteItemExample {
public static void main(String[] args) {
try (DynamoDbClient ddb = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.build()) {
Map<String, AttributeValue> key = new HashMap<>();
key.put("Artist", AttributeValue.builder().s("Arturo Sandoval").build());
key.put("SongTitle", AttributeValue.builder().s("Cubano Chant").build());
DeleteItemRequest request = DeleteItemRequest.builder()
.tableName("Music")
.key(key)
.returnValues(ReturnValue.ALL_OLD)
.build();
DeleteItemResponse response = ddb.deleteItem(request);
if (response.attributes().isEmpty()) {
System.out.println("No item with that key existed");
} else {
System.out.println("Deleted: " + response.attributes());
}
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
}
}說明
key— 必須包含每一個 primary-key 屬性:simple key 只需 partition key,composite key 則需 partition 與 sort key。- Delete 具冪等性 — 刪除一個不存在的 key 仍算成功(無錯誤)。搭配
returnValues(ReturnValue.ALL_OLD),被刪除的項目會回到response.attributes();空 map 表示那裡本來就沒有東西。 DeleteItem的ReturnValues只支援NONE(預設)與ALL_OLD—ALL_NEW/UPDATED_*選項屬於UpdateItem。- 條件式刪除 — 加上
conditionExpression(例如以attribute_exists(Artist)讓缺少的項目失敗,或以Awards = :zero依值守衛);失敗的條件會拋出ConditionalCheckFailedException。 DeleteItem每次呼叫只移除一個項目。沒有「全部刪除」的 API — 若要清空表格,請以Scan逐一取得 key 並批次刪除,或刪掉並重建表格。
改用視覺化操作
以條件為刪除加上守衛?DynamoDB Expression Builder 會為你組裝 ConditionExpression 與 name/value map。
想在 GUI 中刪除項目 — 選取列、確認、完成,產生的程式碼一鍵可得 — 下載 DynoTable。
相關範例
- 在 Go 中使用 DynamoDB DeleteItem — 以 AWS SDK for Go v2 執行相同的刪除。
- 在 Java 中使用 DynamoDB PutItem — 同一個 key 的寫入端。
- DynamoDB 條件運算式 — 以
attribute_exists與值檢查為刪除加上守衛。 - DynamoDB ConditionalCheckFailedException — 失敗的條件式刪除會拋出什麼,以及何時屬預期之內。
References
- DeleteItem — Amazon DynamoDB API Reference
- Use DeleteItem with an AWS SDK or CLI — Amazon DynamoDB Developer Guide
- DynamoDbClient — AWS SDK for Java 2.x API Reference
- DeleteItemRequest — AWS SDK for Java 2.x API Reference
- Condition expressions — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。