LoginSignup
1
1

More than 1 year has passed since last update.

AWS S3の大量オブジェクトの削除方法 <AWS S3 batch Operations>

Last updated at Posted at 2021-05-21

はじめに

サービスで使用している画像ファイルが8億オブジェクト以上ある中で、
一部サービス終了に伴い画像ファイルを削除する必要が発生し
大量にあるので、マネージメントコンソールからオブジェクトの削除を実施しても
完了しない・タイムアウトになることから安全かつ確実に削除する方法を実施したものを
まとめてみました。

前提

1つバケットに対して、フォルダごとに機能別にオブジェクト(画像)を管理している。

やりたいこと

バケットの中のオブジェクトは現状サービスでも使われているものもあるので、
バックアップを取得して安全に削除を実施すること。

課題

大量のオブジェクトがあることから、マネージメントコンソールやawscliでは難しいこと。

解決策

大量のS3オブジェクトに対して一括でAPIを実行できるS3 batch Operatonsで、
削除するオブジェクトに対してタグを付け、念のためにバケット全体のバックアップで
オブジェクトのコピーを実施する。
(全体のバックアップはもしかしたら不要かもしれないが、削除するものだけバックアップをとる方がいい)

削除は上記でタグを付けたものに対して、ライフサイクルルールで削除を実施していくことで、
多少時間が掛かるが安全に削除を実施した。

やってみる

step1.S3バケットのインベントリーレポートを取得

対象のオブジェクト情報を取得する必要があるため、インベントリー情報から取得をおこないました。

出力される「manifest.json」ファイルに中にオブジェクトの実際の情報がcsvファイルで書かれています。

step2.削除するオブジェクトに対してタグ付けを実施

:thinking:タグ付自体はもし処理中にオブジェクトがアップされた場合は削除されるのを
防ぐためのものになりますので、特に気にしない場合はスキップしても問題ないかと思います。

step3.バケット全体を別バケットにバックアップ(コピー)

step4.ライフサイクルルールでオブジェクトを削除

step5.バックアップ先のオブジェクトを削除

★★★近日アップデート
step4と基本は同じようにライフサイクルルールでの削除を実施

参考Link

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1