Java (AWS SDK v2) での DynamoDB DeleteItem
DeleteItem は、完全なプライマリキーによって単一のアイテムを削除します。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());
}
}
}Explanation
key— すべてのプライマリキー属性を含める必要があります。シンプルキーならパーティションキーだけ、複合キーならパーティションキーとソートキーの両方です。- 削除はべき等 — 存在しないキーの削除も成功します(エラーなし)。
returnValues(ReturnValue.ALL_OLD)を指定すると、削除されたアイテムがresponse.attributes()で返ります。空のマップは、そこに何もなかったことを意味します。 DeleteItemのReturnValuesはNONE(デフォルト)とALL_OLDのみをサポートします —ALL_NEW/UPDATED_*オプションはUpdateItemに属します。- 条件付き削除 —
conditionExpressionを追加します(例: 存在しないアイテムで失敗させるattribute_exists(Artist)、または値でガードするAwards = :zero)。失敗した条件はConditionalCheckFailedExceptionをスローします。 DeleteItemは1回の呼び出しにつき1アイテムを削除します。「すべて削除」の API はありません。テーブルを空にするには、Scanでキーを反復して削除をバッチ化するか、テーブルを削除して再作成してください。
Do it visually
条件で削除をガードしていますか?DynamoDB Expression Builder が ConditionExpression と name/value マップを組み立ててくれます。
GUI からアイテムを削除するには(行を選択、確認、完了。生成されたコードはワンクリックで手に入ります)、DynoTable をダウンロードしてください。
Related examples
- DynamoDB DeleteItem in Go — AWS SDK for Go v2 での同じ削除。
- DynamoDB PutItem in Java — 同じキーの書き込み側。
- 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
- 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 ドキュメントに照らして確認しました。