目次Category
はじめに
今回の記事では、Amazon S3のバージョニングとライフサイクルを使用して、データを保護しながら古いデータを自動的に管理する方法について説明します。
Amazon S3は、AWSが提供しているオブジェクトストレージサービスです。画像、動画、CSV、ログ、バックアップファイルなど、さまざまなデータを保存できます。
今回使用するS3バージョニングでは、同じファイルを更新した場合でも過去の状態を残すことができます。また、S3ライフサイクルを組み合わせることで、古いバージョンを一定期間後に自動削除するなどの管理ができます。
- S3バケットを作成し、バージョニングを有効化する
- 同じファイルを複数回アップロードし、複数Versionを確認する
- ファイルを削除し、Delete Markerを確認する
- Delete Markerを削除してファイルを復旧する
- Noncurrent Versionを30日後に削除するライフサイクルルールを作成する
- S3 Storage Classes、Block Public Access、暗号化を確認する
- S3バケットを空にして、ハンズオンで作成したリソースを削除する
この記事では、最初に各機能の役割を説明し、その後にAWSマネジメントコンソールで行う手順を記載します。
今回のハンズオンでは、1つのS3バケットに対してバージョニングとライフサイクルを設定します。
S3バケット
ojt-s3-[name]-01
│
├── バージョニング
│ └── sample.txt の過去Versionを保持
│
└── ライフサイクルルール
ojt-lifecycle-[name]-01
└── Noncurrent Versionを30日後に完全削除0. Amazon S3と今回使用する機能について
Amazon S3は、データをオブジェクトとして保存するストレージサービスです。
Webサイトの画像や動画、アプリからアップロードされたファイル、バックアップ、システムログ、データ分析用ファイルなど、さまざまな用途で利用されます。
バージョニングを有効にすると、同じ名前のファイルを更新しても、以前の状態を別のVersionとして残すことができます。
sample.txt │ ├── Version 2 ← 最新 └── Version 1
各VersionにはVersion IDが付与され、S3は同じファイル名の複数Versionを区別します。
そのため、誤更新や誤削除が発生した場合でも、以前のVersionが残っていれば復旧できます。
バージョニングを利用すると過去Versionも保存容量を使用するため、Versionが増え続けるとストレージ使用量やコストが増える可能性があります。
S3 Lifecycleでは、一定期間が経過したオブジェクトを自動削除したり、別のストレージクラスへ移動したりできます。
今回は、最新ではなくなったVersionを30日後に完全削除するルールを作成します。
1. S3バケットを作成してバージョニングを確認する
ここからは実際にS3バケットを作成し、同じ名前のファイルを2回アップロードします。
同じファイル名でもVersion IDが異なる複数のオブジェクトとして保存されることを確認します。
1-1. S3バケットを作成する
1. AWSマネジメントコンソール上部の検索欄で「S3」を検索します。
2. Amazon S3を開きます。
3. 「バケットを作成」をクリックします。
4. バケット名に ojt-s3-[name]-01 を入力します。
5. 今回はその他の設定を基本的にデフォルトのままとします。
6. バケットのバージョニングを有効にします。
7. 「バケットを作成」をクリックします。
[name] の部分は、自分の識別名へ置き換えてください。1-2. Version 1のファイルを作成する
PC上に sample.txt を作成します。
ファイルの内容を次のようにします。
Version 1
sample1-3. sample.txtをアップロードする
1. 作成した ojt-s3-[name]-01 を開きます。
2. 「オブジェクト」タブを開きます。
3. 「アップロード」をクリックします。
4. 「ファイルを追加」をクリックします。
5. sample.txt を選択します。
6. 「アップロード」をクリックします。
7. オブジェクト一覧に sample.txt が表示されていることを確認します。
1-4. Version IDを確認する
1. オブジェクト一覧画面で「バージョンを表示」を有効にします。
2. sample.txt にVersion IDが設定されていることを確認します。
sample.txt
Version ID:xxxxxxxxxxxxxxxx1-5. Version 2を作成して再アップロードする
PC上の sample.txt を編集し、次の内容へ変更します。
Version 2
変更後!保存後、再びS3バケットから同じ名前の sample.txt をアップロードします。
1-6. 複数Versionを確認する
「バージョンを表示」をONにします。
sample.txt │ ├── Version 2 ← 最新 └── Version 1
同じ sample.txt に複数のVersionが存在し、それぞれのVersion IDが異なることを確認します。
2. 削除したファイルを復旧する
バージョニングが有効なS3バケットで通常の削除を行った場合、過去Versionがすぐに完全削除されるわけではありません。
代わりにDelete Markerが追加され、Delete Markerが最新Versionになることで、通常のオブジェクト一覧ではファイルが削除されたように見えます。
sample.txt │ ├── Delete Marker ← 最新 ├── Version 2 └── Version 1
Delete Markerを削除すると直前のVersionが再び最新となり、ファイルを復旧できます。
2-1. sample.txtを削除する
1. 「バージョンを表示」をOFFにします。
2. 通常のオブジェクト一覧から sample.txt を選択します。
3. 「削除」をクリックします。
4. 削除確認画面の指示に従って削除します。
5. オブジェクト一覧から sample.txt が表示されなくなったことを確認します。
2-2. Delete Markerを確認する
「バージョンを表示」をONにします。
sample.txt │ ├── Delete Marker ├── Version 2 └── Version 1
Delete Markerが追加されていることを確認します。
2-3. Delete Markerを削除する
1. sample.txt のVersion一覧からDelete Markerを探します。
2. Delete Markerだけを選択します。
3. 「削除」をクリックします。
Version 1やVersion 2ではなく、Delete Markerを選択してください。
2-4. ファイルが復旧したことを確認する
1. 「バージョンを表示」をOFFにします。
2. 通常のオブジェクト一覧に sample.txt が再び表示されていることを確認します。
3. 必要に応じてファイルをダウンロードし、内容がVersion 2になっていることを確認します。
これで、削除したファイルの復旧は成功です。
3. S3ライフサイクルを設定する
ライフサイクルを設定する前に、Current VersionとNoncurrent Versionの違いを確認します。
Version 3 ← Current Version Version 2 ← Noncurrent Version Version 1 ← Noncurrent Version
Current Versionは現在の最新Version、Noncurrent Versionは最新ではなくなった過去Versionです。
今回はNoncurrent Versionを30日後に完全削除します。
3-1. ライフサイクルルール作成画面を開く
1. ojt-s3-[name]-01 を開きます。
2. 「管理」タブをクリックします。
3. ライフサイクルルールを探します。
4. 「ライフサイクルルールを作成」をクリックします。
3-2. ルール名と適用範囲を設定する
ライフサイクルルール名に ojt-lifecycle-[name]-01 を入力します。
今回はバケット内のすべてのオブジェクトを対象にします。
3-3. Lifecycleアクションを設定する
1. ライフサイクルアクションから「オブジェクトの非現行バージョンを完全に削除」に相当する項目を選択します。
2. 非現行バージョンになってからの日数として「30」を入力します。
Version 1
│
│ Version 2がアップロードされる
↓
Noncurrent Versionになる
│
│ 30日経過
↓
完全削除3-4. 設定内容を確認してルールを作成する
ルール名:
ojt-lifecycle-[name]-01
対象:
バケット内のすべてのオブジェクト
処理:
Noncurrent Versionを完全削除
期間:
Noncurrent Versionになってから30日後問題がなければ「ルールを作成」をクリックします。
3-5. 作成したルールを確認する
「管理」タブのライフサイクルルール一覧を確認します。
ojt-lifecycle-[name]-01 が表示されていれば設定完了です。
復旧できる期間と保存コストのバランスを考えて保存期間を決めます。
重要な業務データ、Webサイトの画像、一時ファイル、長期間保存義務があるデータなど、用途によって必要な保持期間は異なります。
4. S3のその他の機能を確認する
S3には、バージョニングとライフサイクル以外にも、実際のシステムでよく利用される機能があります。
- S3 Storage Classes
- S3 Block Public Access
- S3の暗号化
4-1. S3 Storage Classesについて
S3には、データの利用頻度や用途に応じて複数のストレージクラスが用意されています。
S3 Standard
└── 頻繁にアクセスするデータ向け
S3 Intelligent-Tiering
└── アクセス頻度が予測しにくいデータ向け
S3 Standard-IA
└── アクセス頻度は低いが、必要なときにはすぐ取り出したいデータ向け
S3 Glacier系
└── 長期間保存するアーカイブデータ向けライフサイクルを利用すると、一定期間後に別のストレージクラスへ移動するといった自動管理も可能です。
4-2. S3 Block Public Accessを確認する
S3 Block Public Accessは、S3バケットやオブジェクトが意図せず一般公開されることを防ぐための機能です。
今回は設定変更を行わず、作成したバケットの状態だけを確認します。
1. ojt-s3-[name]-01 を開きます。
2. 「アクセス許可」タブを開きます。
3. 「ブロックパブリックアクセス(バケット設定)」を確認します。
4. パブリックアクセスがブロックされていることを確認します。
4-3. S3の暗号化を確認する
S3には、保存しているデータを暗号化する仕組みがあります。代表的なものとして、SSE-S3とSSE-KMSがあります。
今回は設定変更を行わず、暗号化状態を確認します。
1. ojt-s3-[name]-01 を開きます。
2. 「プロパティ」タブを開きます。
3. 「デフォルトの暗号化」を探し、暗号化設定を確認します。
4. 次に「オブジェクト」タブから sample.txt を開きます。
5. 「プロパティ」からサーバー側の暗号化を確認します。
5. AWS Cloud Practitioner 試験対策
最後に、今回学習したS3に関する問題を確認します。
Amazon S3の特徴として正しいものを2つ選択してください。
A. グローバルファイルシステム
B. オブジェクトストレージ
C. ローカルファイルストレージ
D. ネットワークファイルシステム
E. 高い耐久性を持つストレージシステム
正解:
B. オブジェクトストレージ
E. 高い耐久性を持つストレージシステム
6. ハンズオンで作成したリソースを削除する
最後に、今回のハンズオンで作成したS3バケットを削除します。
バージョニングを有効にしたバケットを削除する場合は、通常のオブジェクトだけではなく、過去VersionやDelete Markerも含めてバケットを空にする必要があります。
削除したデータは復旧できません。必ず今回のハンズオン用バケットであることを確認してから操作してください。
6-1. S3バケットを空にする
1. Amazon S3を開きます。
2. バケット一覧を開きます。
3. ojt-s3-[name]-01 を選択します。
4. 「空にする」をクリックします。
5. 削除対象のバケット名を確認します。
6. 画面の指示に従って確認文字列を入力します。
7. 「空にする」を実行します。
6-2. バケットが空になったことを確認する
1. ojt-s3-[name]-01 を開きます。
2. オブジェクトが存在しないことを確認します。
3. 「バージョンを表示」をONにし、過去VersionやDelete Markerも残っていないことを確認します。
6-3. S3バケットを削除する
1. S3のバケット一覧へ戻ります。
2. ojt-s3-[name]-01 を選択します。
3. 「削除」をクリックします。
4. 削除対象のバケット名を確認します。
5. 画面の指示に従ってバケット名を入力します。
6. 「バケットを削除」をクリックします。
7. バケット一覧から ojt-s3-[name]-01 がなくなっていることを確認します。
まとめ
今回の記事では、Amazon S3のバージョニングとライフサイクルを使用して、データを保護しながら古いVersionを自動管理する方法を確認しました。
今回実施した内容は以下のとおりです。
・S3バケットを作成
・バージョニングを有効化
・同じファイルの複数Versionを確認
・Version IDを確認
・ファイルを削除してDelete Markerを確認
・Delete Markerを削除してファイルを復旧
・Noncurrent Versionを30日後に削除するライフサイクルルールを作成
・S3 Storage Classesを確認
・Block Public Accessを確認
・S3の暗号化を確認
・作成したS3バケットを削除S3は、単純にファイルを保存する場所というだけではありません。
バージョニングを使用することで誤更新や誤削除に備えることができ、ライフサイクルを組み合わせることで、古いデータを自動的に整理できます。
また、Block Public Accessや暗号化、ストレージクラスなどを利用することで、アクセス制御やデータ保護、保存コストまで含めて管理できます。
参考にした記事
今回のAmazon S3のバージョニング・ライフサイクルに関する記事の作成にあたり、以下のAWS公式ドキュメントを参考にしました。
「S3 バージョニングによる複数のバージョンのオブジェクトの保持」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Versioning.html
「S3 バージョニングの仕組み」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/versioning-workflows.html
「オブジェクトのライフサイクルの管理」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/object-lifecycle-mgmt.html
「Amazon S3 ストレージクラスの理解と管理」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/storage-class-intro.html
「Amazon S3 ストレージへのパブリックアクセスのブロック」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/access-control-block-public-access.html
「暗号化によるデータの保護」
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/UsingEncryption.html
同じカテゴリーの記事
同じカテゴリの記事を読む