バージョニング有効なS3バケットのオブジェクトを削除マーカーごと一括削除してみた!

AWS

はじめに

今回は、バージョニングが有効化されているS3バケットに保存されたオブジェクトの一括削除をしていきます。

  • S3バケット:Amazon S3は、オブジェクトという単位でデータ保管できるストレージサービスです。S3を使用する際は、S3バケットを作成して、その中にデータの保存をします。
  • バージョニング有効化:バージョニングは、Amazon S3バケットの機能で、オブジェクトの複数のバージョンを保持することができます。これにより、オブジェクトが上書きまたは削除された場合でも、以前のバージョンを復元することが可能になります。
  • 削除マーカー:バージョニングが有効なバケットでオブジェクトを削除すると、Amazon S3は削除マーカーを挿入します。これは特殊なオブジェクトで、削除されたオブジェクトの最新バージョンを示します。削除マーカー自体もバージョンを持つため、削除操作を取り消すことができます。

バケットの概要 – Amazon Simple Storage Service

S3 バケットでのバージョニングの使用 – Amazon Simple Storage Service

事前準備

必要なリソースを準備しておきます。
今回は、S3バケットのみです。
作成は、後述の通りCloudFormationで行います。
また、ShellScriptを使用してダミーファイルの作成とオブジェクトの削除をしますので、対象のスクリプトファイルを作成してCloudShellにアップロードしておきます。

CloudFormationでS3バケットの構築

CloudFormationテンプレートは以下にございます。
ダウンロードしてデスクトップなど任意のフォルダに保存します。
※その他のファイルも後述の手順で使用するためダウンロードしておきます

CloudFormation:YAMLテンプレートのポイント

YAMLテンプレートのポイントを記述します。

Resources:
  # ------------------------------ #
  # S3bucket
  # ------------------------------ #
  S3bucket:
    Type: AWS::S3::Bucket
    Properties:
      AccessControl: Private
      VersioningConfiguration:
        Status: Enabled
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true

スタックの作成

早速、CloudFormationを使用してリソースを作成していきます。
手順は、以下の通りで、リンクにも詳細がございます。

  1. CloudFormation画面を開きスタックの作成>新しいソースを使用(標準)を選択
  2. テンプレートの準備完了>テンプレートファイルのアップロードを選択して、保存したymlを選択
  3. スタックに任意の名称を入力して、パラメータは環境に合わせて変更>次へを選択。※後述の手順に従う場合、デフォルト値でOK
  4. スタックオプションは特に変更せず、次へを選択
  5. レビュー画面を確認して送信を選択

S3バケットが作成されました。

ここでバケット名をメモしておきます。

ShellScriptをCloudShellにアップロード

以下のファイルをCloudShellにアップロードしておきます。

  • create_dummyfile.sh

先ほどメモしたバケット名を上記のShellScriptのBUCKET_NAME変数に代入しておきます。

CloudShellはマネジメントコンソール右上メニューの一番左を選択することで起動できるCLIコンソールです。

[アクション]>[ファイルのアップロード]からローカルに保存したShellScriptを選択してアップロードします。

削除対象のダミーファイルを作成する

create_dummyfile.shを実行してダミーファイルを作成しておきます。

bash -x creat_dummyfile.sh

以下のようにダミーファイルが10個作成されました。

削除しないファイルも作成しておきます。

動作検証

object_delete.shについてもCloudShellにアップロードして実行していきます。

オブジェクトキーに”dummy”が入っているオブジェクトを削除するようにShellScriptを更新しておきます。

bash -x delete_object.sh

作成したファイルが全て削除されています。また、[バージョンの表示]にしても削除マーカーは残っていません。

指定した文字列を含んでいないファイルは残っています。

まとめ

今回は、バージョニングが有効化されているS3バケットに保存されたオブジェクトの一括削除をしてみました。
様々なバックアップデータなど、往々にして大量のファイルが溜まっていきがちなS3バケットです。定期的にお掃除して、必要なファイルがわかりやすく管理される状態を目指したいものですね。
最後までご覧いただきありがとうございました。

コメント

タイトルとURLをコピーしました