データ保護の基礎:Amazon S3 バケットのバックアップ方法

Amazon S3は、Amazon Web Services(AWS)が提供する信頼性の高いクラウドストレージです。ファイルは、Amazon S3バケット内のオブジェクトとして保存されます。Amazon S3は信頼性が高いため、データのバックアップ保存に広く利用されています。冗長データが1つのアベイラビリティゾーンに保存されるAmazon Elastic Block Storage(EBS)とは異なり、Amazon S3では冗長データが複数のアベイラビリティゾーンに分散して保存されます。

あるアベイラビリティゾーンのデータセンターが利用できなくなった場合でも、別のゾーンのデータにアクセスできます。人為的なミスやソフトウェアの障害によるデータ損失を防ぐため、Amazon S3 バケットに保存されたデータをバックアップする必要がある場合があります。S3 バケットへのアクセス権を持つユーザーがデータを削除したり、不要な変更を書き込んでデータを破損させたりすると、データが削除されたり破損したりする可能性があります。ソフトウェアの障害も同様の結果を引き起こす可能性があります。

AWS S3への直接バックアップ | NAKIVO

AWS S3への直接バックアップ | NAKIVO

シンプルなAmazon S3連携とランサムウェア対策のための不変性オプションにより、単一障害点を回避します。自動バックアップ階層化と即時復旧機能も備えています。

Amazon S3 バージョン管理

オブジェクトのバージョン管理は、Amazon S3 の有効な機能の一つであり、バケット内のデータを破損、意図しない変更、および削除から保護します。ファイル(S3 ではオブジェクトとして保存されます)に変更が加えられると、そのオブジェクトの新しいバージョンが作成されます。 同じオブジェクトの複数のバージョンがバケット内に保存されます。オブジェクトの以前のバージョンにアクセスして復元することができます。オブジェクトが削除された場合、そのオブジェクトには"削除マーカー"が適用されますが、この操作を元に戻し、削除前のバージョンのオブジェクトを開くことができます。 Amazon S3のバージョン管理機能は、追加のS3バックアップソフトウェアなしでも利用できます。

ライフサイクルポリシーを使用して、S3バケット内にバージョンを保存する期間を定義することで、Amazon S3のバックアップ機能を実現できます。ライフサイクルポリシーを適切に設定し、新しいバージョンが最も古いバージョンに置き換わるようにすれば、追加のバージョンを保存するためのコストは高くなりません。コストを最適化するために、古いバージョンを削除するか、よりコスト効率の高いストレージ(例:コールドストレージ)に移動することができます。

AWS S3のバージョン管理を有効にする方法

十分な権限を持つアカウントを使用して、AWS Management Console にサインインします。[クリック] Services そして、[選択] をクリックします S3 ~の中で ストレージ カテゴリ。

Backup to Amazon S3 – opening the S3 storage page in AWS Management Console

ナビゲーションペインで、[ ] をクリックします Buckets そして、バージョン管理を有効にしたいS3バケットを選択します。この例では、名前が blog-bucket01. バケット名をクリックすると、バケットの詳細が表示されます。

Backup to Amazon S3 – selecting a bucket

を開く Properties 選択したバケットのタブ。

内の バケットのバージョン管理 セクションで、[クリック] Edit.

How to enable AWS S3 versioning

バケットのバージョン管理は、デフォルトで無効になっています。

クリック Enable バケットのバージョン管理を有効にするには、

をクリックしてください。 Save Changes.

ライフサイクルルールの更新が必要かもしれないというヒントが表示されます。これが次のステップです。

Editing Amazon S3 versioning settings

設定の変更が反映された場合、ページの上部にメッセージが表示されます: バケットのバージョン管理の編集に成功しました.

ライフサイクル規則

Amazon S3 バージョン管理のライフサイクルルールを設定するには、[ Management 選択したバケットのページにあるタブ。 ライフサイクルルール セクションで、[クリック] Create lifecycle rule.

How to create a lifecycle rule for a bucket when AWS S3 versioning is enabled

その ライフサイクルルールを作成する ページが開きます。

Lifecycle Rule configuration. ライフサイクル・ルールの名前を入力します。例: ブログのライフサイクル 01.

ルールの適用範囲を選択します。フィルターを使用してライフサイクルルールを特定のオブジェクトに適用するか、バケット内のすべてのオブジェクトにルールを適用することができます。

ライフサイクルアクションを適用するオブジェクトを指定するために、オブジェクトタグを定義します。適切なフィールドにキーと値を入力し、 Add tag ボタンをクリックしてタグを追加するか、 Remove タグを削除するには、このボタンをクリックしてください。

Configuring a lifecycle rule to meet the AWS backup strategy

Lifecycle rule actions. このルールで実行したいアクションを選択してください:

  • 移行 現在の ストレージクラス間のオブジェクトのバージョン
  • 移行 前へ ストレージクラス間のオブジェクトのバージョン
  • 有効期限切れ 現在の オブジェクトのバージョン
  • 完全に削除する 前へ オブジェクトのバージョン
  • 有効期限が切れた削除マーカーや、完了していないマルチパートアップロードを削除する

Using Amazon S3 for backup – configuring lifecycle rule actions

Transition noncurrent versions of objects between storage classes.

ストレージクラスの移行と、オブジェクトが非アクティブになるまでの日数を選択します。

この例では、オブジェクトは現在のS3ストレージクラスから 標準-IA 35日後。

Permanently delete previous versions of objects.

以前のバージョンを削除するまでの日数を入力します。この値は、オブジェクトが非アクティブになるまでの日数よりも長く設定する必要があります。この例では、オブジェクトは40日後に完全に削除されます。

クリック Create Rule ライフサイクルルールを作成する。

AWS S3 backup – configuring options for a lifecycle rule

バケットの複製

Amazon S3 の自動バックアップの代替手段として、リージョン間でバケットをレプリケートすることができます。別のリージョンに、宛先バケットとなる 2 つ目のバケットを作成し、レプリケーションルールを作成する必要があります。レプリケーションルールを作成すると、ソースバケットで行われたすべての変更が、自動的に宛先バケットに反映されます。

以下の場所を確認してください Replication rules のセクション 経営 ソースバケットのタブを選択し、[クリック] Create replication rule.

S3 bucket replication is an alternative to Amazon S3 backup

その レプリケーションルールを作成する ページが開きます。

レプリケーション・ルールの名前を入力します。例: ブログ:S3バケットのレプリケーション.

ルール作成時のステータスを定義する (enabled または disabled).

Configuring a replication rule for an S3 bucket

ソースバケット。ソースバケットはすでに選択されています(blog-bucket01).

ルールの適用範囲を選択します。レプリケーションルールをバケット内のすべてのオブジェクトに適用するか、フィルタを設定して特定のオブジェクトにルールを適用することができます。

宛先。宛先のバケット名を入力するか、[ Browse S3 リストからバケットを選択します。このアカウント内のバケットでも、別のアカウント内のバケットでも選択できます。ソースバケットで AWS S3 バージョン管理が有効になっている場合、宛先バケットでもオブジェクトのバージョン管理を有効にする必要があります。選択した宛先バケットの宛先リージョンが表示されます。

Amazon S3 bucket replication – selecting a bucket

IDおよびアクセス管理(IAM)ロールを設定し、ストレージクラスと追加のレプリケーションオプションを選択します。[クリック] Save 設定を保存し、バケットのレプリケーションルールを作成します。

Configuring options for Amazon S3 bucket replication

CLI での AWS S3 バックアップ

AWS CLIは、Amazon S3をはじめとするさまざまなAmazonサービスを利用するための強力なコマンドラインインターフェースです。この中には、EC2インスタンス上で動作するLinuxマシンのローカルディレクトリに、Amazon S3バケットからファイルをコピーすることで、Amazon S3バケットをバックアップできる便利な"sync"コマンドがあります。

AWS CLIのsyncコマンドの特徴として、ソースとなるS3バケットにファイルが存在しない場合でも、ローカルファイルシステム(Amazon S3のバックアップ先)にあるファイルは削除されず、その逆も同様です。これはAWS S3のバックアップにおいて重要です。なぜなら、S3バケット内のファイルが誤って削除された場合でも、同期後にLinuxマシンのローカルディレクトリにある既存のファイルが削除されることはないからです。

メリット:

  • 大容量のS3バケットへの対応とスケーラビリティ
  • 同期処理中は複数のスレッドがサポートされています
  • 新規および更新されたファイルのみを同期する機能
  • スマートなアルゴリズムによる高い同期速度

デメリット:

  • EC2インスタンス上で動作するLinuxは、EBSボリュームのストレージ容量を消費します。EBSボリュームのストレージコストは、S3バケットよりも高くなります。

このチュートリアルでは、Ubuntu Server用のコマンドを使用します。

まず、AWS CLIをインストールする必要があります。

リポジトリのツリーを更新します:

sudo apt-get update

AWS CLI をインストールする:

sudo apt install awscli

または

unzip をインストールします:

sudo apt install unzip

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscli-exe-linux-x86_64.zip

sudo ./aws/install

EC2インスタンス上で実行されているLinuxのAWS認証情報を確認してください。

aws configure list

LinuxインスタンスからAWS CLIを使用してAWSにアクセスするための認証情報が設定されていない場合は、認証情報を追加してください:

aws configure

以下のパラメータを入力してください:

AWS アクセスキー ID

AWS シークレットアクセスキー

デフォルトの地域名

デフォルトの出力形式

Amazon S3のバックアップを保存するディレクトリを作成します。この例では、 ~/s3/ S3のバックアップを保存するディレクトリと、バケット名と同じ名前のサブディレクトリ。S3バケットに保存されたファイルは、Linuxマシン上のこのローカルディレクトリにコピーする必要があります。~ はユーザーのホームディレクトリであり、これは /home/ubuntu 私の場合は。

mkdir -p ~/s3/your_bucket_name

置き換える your_bucket_name バケット名(blog-bucket01 (この例では)。

mkdir -p ~/s3/blog-bucket01

Linux を実行している EC2 インスタンス上で、バケットの内容をローカルディレクトリと同期します:

aws s3 sync s3:// blog-bucket01 /home/ubuntu/s3/ blog-bucket01/

認証情報の設定、バケット名、および保存先パスが正しい場合、S3バケットからのデータのダウンロードが開始されます。処理が完了するまでの時間は、バケット内のファイルのサイズやインターネット接続速度によって異なります。

Amazon S3の自動バックアップ

AWS CLI sync を使用して、Amazon S3 の自動バックアップジョブを設定できます。AWS S3 バックアップを実行するための sync.sh スクリプトファイルを作成し(S3 バケットから Linux インスタンス上のローカルディレクトリへファイルを同期します)、このスクリプトをスケジュールに従って実行します。

nano /home/ubuntu/s3/sync.sh

#!/bin/sh

# Display the current date and time

echo '-----------------------------'

date

echo '-----------------------------'

echo ''

# Display the script initialization message

echo 'Syncing remote S3 bucket...'

# Running the sync command

/usr/bin/aws s3 sync s3://{BUCKET_NAME} /home/ubuntu/s3/{BUCKET_NAME}/

# Echo "Script execution is completed"

echo 'Sync complete'

{BUCKET_NAME} を、バックアップしたい S3 バケットの名前に置き換えてください。

への完全なパスは AWS (AWS CLI バイナリ) は、crontab が AWS crontab で使用されるシェル環境でスクリプトが正しく実行されるようにします。

スクリプトに実行権限を付与します:

sudo chmod +x /home/ubuntu/s3/sync.sh

スクリプトを実行して、正常に動作するか確認してください:

/home/ubuntu/s3/sync.sh

現在のユーザーのcrontab(Linuxのスケジュール機能)を編集し、Amazon S3バックアップスクリプトの実行をスケジュールします。

crontab -e

crontabの設定を編集するには、テキストエディタを選択する必要がある場合があります。

タスクをスケジュールするためのcrontabの形式は以下の通りです:

m h dom mon dow command

説明:m – 分、h – 時間、dom – 月の何日目、dow – 曜日の何曜日。

1時間ごとに同期を実行し、AWS S3へのバックアップ結果をログファイルに保存するように、タスクの設定行を追加しましょう。この行をcrontab設定ファイルの末尾に追加してください。

0 * * * * /home/ubuntu/s3/sync.sh > /home/ubuntu/s3/sync.log

Amazon S3の自動バックアップが設定されました。ログファイルを使用して、同期タスクの実行状況を確認できます。

結論

Amazon S3のバックアップを行う方法はいくつかありますが、このブログ記事ではそのうちの2つについて解説しました。バケットでオブジェクトのバージョン管理を有効にすると、オブジェクトの過去のバージョンを保持できるため、ファイルに意図しない変更が加えられた場合でも、以前の状態のファイルを取り戻すことが可能です。Amazon S3レプリケーションは、Amazon S3バケットにオブジェクトとして保存されているファイルのコピーを作成するための、もう1つのネイティブツールです。この場合、オブジェクトはあるバケットから別のバケットへレプリケートされます。 また、AWS CLIのsyncツールを使用してAmazon S3バケットのバックアップを作成することも可能です。これにより、バケット内のファイルを、EC2インスタンス上で動作するLinuxマシンのローカルディレクトリと同期させることができます。 Amazon S3の自動バックアップは、スクリプトとcrontabを使用してスケジュール設定できます。

一般的に、Amazon S3クラウドストレージは非常に信頼性が高く、Amazon S3へのバックアップは一般的な手法です。コードデータ保護戦略やAWSバックアップ戦略をお持ちの場合は、バックアップコピーを用意しておくべきです。この場合、データをAmazon S3と別の保存先にバックアップすることをお勧めします。使用 NAKIVO Backup & Replication 物理マシンおよび仮想マシン上のデータを保護するため。 NAKIVO Backup & Replication これは、仮想マシン(VM)だけでなく、Amazon EC2インスタンスや物理マシンも保護できる、堅牢な仮想化バックアップソフトウェアです。

試してみてください NAKIVO Backup & Replication

試してみてください NAKIVO Backup & Replication

無料トライアルをご利用いただき、本ソリューションのデータ保護機能をすべてお試しください。15日間無料です。機能や容量の制限は一切ありません。クレジットカードも不要です。

People also read