JavaでS3オブジェクトをまとめて最大1000件削除する(DeleteObjectsRequest)
S3オブジェクトをまとめて削除したい場合は、DeleteObjectsRequestクラスを使用して1000件まで一気に削除することができます。
オブジェクトを1つごと削除していると無駄な通信が増えてしまうので纏めて削除する場合はこのクラスを使用するのがお勧めです。
但し最大1000件までしか削除できないので、1000件以上削除するにはループしてあげないといけません。
@Component
@Scope("prototype")
@RequiredArgsConstructor
public class Hoge() {
private final AmazonS3 s3;
private final S3Config config; // S3の情報持っていると仮定
public Integer deleteMultipleObjects(List<String> deleteTarget){
Integer count = 0;
int size = 1000;
for (int i = 0; i < deleteTarget.size(); i += size) {
List<String> list = new ArrayList<>(
deleteTarget.subList(i, Math.min(i + size, deleteTarget.size()))
);
String[] keyArray = list.toArray(new String[list.size()]);
DeleteObjectsResult result
= s3.deleteObjects(new DeleteObjectsRequest(config.getBucket()).withKeys(keyArray).withQuiet(false));
count += result.getDeletedObjects().size();
}
return count;
}
}
参考サイト

Amazon S3で複数のオブジェクトをまとめて消せるようになりました | DevelopersIO

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント