S3に重要なデータを保存する

はじめに

本記事ではS3にて重要なデータ保存する場合の設定例について説明します。そう言えばS3は機能が簡単なので、言葉としては覚えていたけどS3の機能をあまり今まで触ったことがなかった、という方向けの記事となります。

こちらの記事では重要度の高いデータをS3バケットに保存する、以下のようなシナリオを想定し、作業を進めていきます。

本記事で作成するバケットの設定する内容

  1. パブリックからのアクセスは拒否する
  2. 誤ってオブジェクトの削除が行われても復元できるようにする
  3. データはAWS KMSによる暗号化を行う
  4. マルチリージョンでデータを保管する(東京リージョンと大阪リージョン)
  5. アクセスログを取得可能とする
  6. (ライフサイクルポリシーを設定する)※次の記事で記載予定

実施内容

カスタマー管理型のキーの作成

S3バケットのオブジェクトの暗号化を行うためにAWS KMSのサービスのページからカスタマー管理型のキーを作成します。

今回は東京リージョンと大阪リージョンで同じカスタマーキーを利用しますので、マルチリージョンキーを選択しておいてください。

こちらのようになります。

詳細ページの「リージョンごと」のメニューから大阪リージョン向けのマルチリージョンキー(レプリカキー)の作成を行っておいて下さい。

重要なデータ保管用のS3バケットの作成

重要なデータを保管するためのS3バケットを作成します。

ここで「1. パブリックからのアクセスは拒否する」の設定を行います。

ここで「2. 誤ってオブジェクトの削除が行われても復元できるようにする」の設定を行います。

ここで「データはAWS KMSによる暗号化を行う」の設定を行います。

これで重要なデータを保存するバケットは完成しました。テスト用にいくつかアップロードして良いファイルを用意しておきましょう。

重要なデータのバックアップ用のS3バケットの作成

上記と同様の方法でバックアップ用のS3バケットを作成して下さい。リージョンのみ、上記とは異なるリージョンを選択して下さい。 今回は大阪リージョンで作成しました。 バックアップを別のリージョンにコピーするCross Region Replicationの設定の宛先にこちらを使用します。

ログデータ保管用のS3バケットの作成

重要なデータのログ保管用にバケットをもう一つ作成しておきます。こちらはバージョン管理や暗号化の設定は不要です。

Cross Region Replicationの設定

レプリケーションしたいバケットの管理メニューからレプリケーションルールを表示します。

レプリケーションルールを作成していきます。

送信先には大阪リージョンに作成したバックアップ用のバケットを指定します。

後は先ほど作成した鍵を改めて選択することで設定は完了です。ここで「4. マルチリージョンでデータを保管する(東京リージョンと大阪リージョン)」の設定も完了となります。

アクセスログの設定

重要なデータを保管するバケットのプロパティを開き、サーバーアクセスのログ記録のメニューを編集します。ターゲットバケットには先に作成したデータログ用のバケットを選択して下さい。ここで「5. アクセスログを取得可能とする」の設定も完了です。

動作確認(削除してみる)

中身のオブジェクトを削除してみます。

あれ…バージョニングを有効にしたら間違って削除出来ると聞いていたのに普通に消えている。。

ちょっと焦りましたが、バージョンの表示を有効にすることで消してしまったファイルを確認することが可能です。バージョニングが有効となっているオブジェクトに対する削除は、オブジェクト自体を削除するのではなく、削除マーカーを先頭に置くことで削除したこととしているようです。そのため、この削除マーカーを削除することでオブジェクトを復元することが可能となります。

以下のように削除マーカーのオブジェクトを削除します。

その後、以下のように正常にオブジェクトが復元されていることが確認可能です。

動作確認(Cross Region Replicationが動いているか)

公式によるとレプリケーションには、ほとんどの場合で15分以内、場合によって数時間かかるとのことでした。私の環境の場合、ファイルの新規アップロード直後、バックアップ用のバケットに重要なデータバケットのデータがレプリケートされていることが確認出来ました。

動作確認(アクセスログが取得出来ているか)

こちらも正常に設定がなされていれば、以下のように対象のS3オブジェクトへのアクセス記録が保存されているかと思います。

さいごに

本記事では重要なデータをS3に保存する際の設定例について説明致しました。私自身、初めて触る機能も多かったのですが、やはり実際にやってみたことで理解が進みました。この記事を読んだ方も是非、自身でトライしてみて下さい。ではまた。