Java (AWS SDK v2) での DynamoDB DeleteItem

DeleteItem は、完全なプライマリキーによって単一のアイテムを削除します。AWS SDK for Java 2.x では、DeleteItemRequest を構築して DynamoDbClientdeleteItem を呼び出します。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() で返ります。空のマップは、そこに何もなかったことを意味します。
  • DeleteItemReturnValuesNONE(デフォルト)と ALL_OLD のみをサポートしますALL_NEW/UPDATED_* オプションは UpdateItem に属します。
  • 条件付き削除conditionExpression を追加します(例: 存在しないアイテムで失敗させる attribute_exists(Artist)、または値でガードする Awards = :zero)。失敗した条件は ConditionalCheckFailedException をスローします。
  • DeleteItem1回の呼び出しにつき1アイテムを削除します。「すべて削除」の API はありません。テーブルを空にするには、Scan でキーを反復して削除をバッチ化するか、テーブルを削除して再作成してください。

Do it visually

条件で削除をガードしていますか?DynamoDB Expression BuilderConditionExpression と name/value マップを組み立ててくれます。

GUI からアイテムを削除するには(行を選択、確認、完了。生成されたコードはワンクリックで手に入ります)、DynoTable をダウンロードしてください。

References

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。