さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

S3のレプリケーション機能

S3のオブジェクトレプリケーション機能というのがあるので、備忘録がてら解説してみます。

docs.aws.amazon.com

こちらは、簡単にいうと、S3に格納しているオブジェクトを別のバケットなどにレプリケーションしてくれる機能です。
リードレプリカを作成するような感じですね。バックアップとは違うことを注意しましょう。
バージョニングなどのメタデータも完全にレプリケートされるので、そういった要件がある場合は非常に嬉しい機能になります。

レプリケートされないもの

ただ、完全に同じものをレプリケートするかというと以下の部分が違う模様。

  • 削除されたオブジェクト

こちらは、同じく削除されるというわけではなく、削除マーカーがつくだけのようです。
削除リクエストを出せば削除されるという仕様のようですね。

また、DBのレプリケート同様にオブジェクトがレプリケートの対象なので、入れ物の設定はコピーされません。

レプリケートの要件

参考 : オブジェクトのレプリケーション - Amazon Simple Storage Service

必要な項目については以下のように記されています。

オブジェクトのレプリケーションを有効にするには、レプリケーション設定をレプリケート元バケットに追加します。最小設定では、以下を指定する必要があります。

僕がやろうとしたところ、追加でオブジェクトのバージョニングも必要だったので気をつけてください。

また、レプリケート開始時には以下の情報が必要になります。

  • レプリケート元バケット

  • 送信先バケット

  • レプリケートする推定ストレージボリューム (テラバイト単位)

  • レプリケートするストレージオブジェクトの推定数

推定ボリュームやオブジェクトの推定数が結構難しかった記憶があります。
最初から想定しきるのは不可能なので、できるだけで良いようです。

また、既存のバケットレプリケーションする際はサポートに前述の要件を満たした上でレプリケート元バケットなどの前述の4情報を伝えて既存オブジェクトをレプリケートしてもらう必要があります。

まとめ

オブジェクトをレプリケートする という要件だととても良いものですね。なんのデメリットもないので検討してる方は全然採用しても良いかと思います。
ただ、バックアップには向きません。 CloudWatchにログが記載されるようですが、どうやら細かいオブジェクトの情報までは記載されません。(参考 : https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/replication-metrics.html

オブジェクトの細かい情報まで追っていけばバージョンの情報や削除マーカーがあるのでできなくもないですが、ちょっと非現実的ですよね。間違えて書き換えてしまったとかその辺りはカバーするのはとても難しいです。
僕はそもそもバックアップしたいなぁとおもってレプリケーション機能を調べていたので、次回は ぼくのかんがえたS3ばっくあっぷ計画 となります。