3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【AWS】【S3】レプリケーションのレプリケーションはできないし、複数宛先へのレプリケーションもできない→複数宛先へのレプリケーションには対応

Last updated at Posted at 2020-09-04

#はじめる前に・・・
当記事を書いた時点では複数宛先へのレプリケーションは不可でしたが、現在は対応しているようです。
https://aws.amazon.com/jp/blogs/news/new-amazon-s3-replication-adds-support-for-multiple-destination-buckets/
これができなかった時代もあったんだ〜という、歴史書としてお読みくださいませ。

#はじめに
S3にはセイムリージョンレプリケーションという機能があります。
https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-s3-introduces-same-region-replication/
この機能を利用して、ログを特定のアカウントに集約して分析に使っちゃうなんてのはどう?的なことが公式のブログに書いてあったりもします。
https://aws.amazon.com/jp/blogs/news/aggregating-logs-with-s3-same-region-replication/

一方で、争いの絶えない社会で人間は色々なことを要求します。
例えば、ある一連のシステムから出るログのうち、

  • システム運用と、セキュリティ監視で用途別のアカウントにログ集約したい。だから2箇所に同時にレプリケーションしたい
  • 監査目的、あるいは業界のルールを満たすために、XX年ログを保管したい。
  • ログ保管と分析の役割を持つ組織がそれぞれ存在し、ログ分析する組織は長期保管のコストを払いたくない。
  • よし、じゃあログ集約アカウントでXX年保管して、必要なログをログ分析アカウントにもっかいレプリケーションしよう!

といったことを実施したくなる日が必ず来ると思います。
残念ながら、これらが できない ということを確かめたので、記事にします。

#結論
##レプリケーションしたものを再度レプリケーション(できない)
レプリケートされたオブジェクトを再度レプリケートさせることはできませんでした
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html
多重レプリケーション.png

##複数宛先へのレプリケーション(できない)→2020年12月〜できるようになった!
https://aws.amazon.com/jp/blogs/news/new-amazon-s3-replication-adds-support-for-multiple-destination-buckets/

レプリケーション先は1つのバケットしか指定できませんでした。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication-add-config.html#replication-config-optional-dest-config
宛先複数レプリケーション.png

#検証
##前提条件

  • 3つのアカウントを準備し、それぞれのアカウントで以下の通りバケットを作成しました。なお、バケット名以外の設定値は全て同じとしました。
アカウント バケット名
1 nakayoshi-1
2 nakayoshi-2
3 nakayoshi-3
  • リージョンは ap-northeast-1(東京) を使用しました。

##共通作業
###バケット作成
共通作業として、バケットを作成します。
S3管理画面から「バケットを作成する」を選択し、以下の設定を行います。
####名前とリージョン

設定項目 備考
バケット名 nakayoshi-1
nakayoshi-2
nakayoshi-3
アカウントごとに名前をつける
リージョン アジアパシフィック(東京)
既存のバケットから設定をコピー 空欄

####オプションの設定

設定項目 備考
バージョニング ON https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication.html#replication-requirements
サーバーアクセスのログ記録 OFF
Tags OFF
オブジェクトレベルのログ記録 OFF
デフォルト暗号化 OFF
オブジェクトのロック OFF
CloudWatch リクエストメトリクス OFF

####アクセス許可の設定
パブリックアクセスを全てブロックにチェックを入れる。

####作成後確認
プロパティを見ると以下のようになります。
2020-09-04 19_26_46-S3 Management Console.png

##レプリケーションのレプリケーション検証
以下2つのレプリケーションルールを作成し、レプリケーションの挙動を確認します。

  • nakayoshi-1 → nakayoshi-2
  • nakayoshi-2 → nakayoshi-3

###レプリケーション設定
S3管理画面から「バケット名 → 管理 → レプリケーション → ルールの追加」の順で選択し、ルールを作成します。
####ソースの設定

設定項目 nakayoshi-1 nakayoshi-2 備考
ソースの設定 nakayoshi-1 のすべてのコンテンツ nakayoshi-2 のすべてのコンテンツ
AWS KMSで暗号化されたオブジェクトを複製する OFF OFF
####送信先の設定
設定項目 nakayoshi-1 nakayoshi-2 備考
:-: :-: :-: :-:
送信先バケット nakayoshi-2のアカウントIDとバケット名 nakayoshi-3のアカウントIDとバケット名
レプリケートされたオブジェクト用のストレージクラスを変更 OFF OFF
オブジェクト所有者を送信先バケット所有者に変更 ON ON ONにしないとレプリケート先でオブジェクトにアクセスできない。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication-change-owner.html
レプリケーション時間のコントロール OFF OFF
####規則のオプションの構成
設定項目 nakayoshi-1 nakayoshi-2 備考
:-: :-: :-: :-:
IAMロール 新しいIAMロールを作成 新しいIAMロールを作成 s3crr_role_for_<ルール名>のIAMロールが新しくできる
ルール名 nakayoshi-1 to nakayoshi-2 nakayoshi-2 to nakayoshi-3
ステータス 有効 有効
バケットポリシー メモっておく メモっておく
####作成後確認
作成したルールが以下のように表示されます。
2020-09-04 19_29_09-S3 Management Console.png
2020-09-04 19_31_38-S3 Management Console.png

###バケットポリシーの追加
ソースのバケットが送信先のバケットにレプリケートできるよう、送信先側のバケットでバケットポリシーを記載します。
関係は以下の通りです。

バケット 設定するポリシー 備考
nakayoshi-2 nakayoshi-1設定時にメモっておいた内容
nakayoshi-3 nakayoshi-2設定時にメモっておいた内容

以下のような警告っぽいメッセージが表示されますが、攻略を先に進めて大丈夫です。
2020-09-04 19_35_43-S3 Management Console.png

###オブジェクトを置いて動きを確認する(検証結果)
nakayoshi-1とnakayoshi-2に任意のオブジェクトをアップロードして、動きを確かめます。
以下のような結果になり、レプリケーションのレプリケーションができないことが確認できるはずです。

パターン 結果 備考
nakayoshi-1に置いたオブジェクト nakayoshi-2にレプリケートされる。
nakayoshi-3にはレプリケートされない。
nakayoshi-2に置いたオブジェクト nakayoshi-3にレプリケートされる。

##複数宛先へのレプリケーション検証
nakayoshi-1に、nakayoshi-3宛のルールを追加して動きを確認します。
###レプリケーション設定
S3管理画面から「バケット名 → 管理 → レプリケーション → ルールの追加」の順で選択し、ルールを作成します。
####ソースの設定
| 設定項目 | nakayoshi-1 |
|:-:|:-:|:-:|:-:|
| ソースの設定 | nakayoshi-1 のすべてのコンテンツ |
| AWS KMSで暗号化されたオブジェクトを複製する | OFF |
####送信先の設定
| 設定項目 | nakayoshi-1 |
|:-:|:-:|:-:|:-:|
| 送信先バケット | nakayoshi-2のアカウントIDとバケット名 |
| レプリケートされたオブジェクト用のストレージクラスを変更 | OFF |OFF | |
| オブジェクト所有者を送信先バケット所有者に変更 | ON |
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication-change-owner.html |
| レプリケーション時間のコントロール | OFF |
####規則のオプションの構成
| 設定項目 | nakayoshi-1 |
|:-:|:-:|:-:|:-:|
| IAMロール | 編集→新しいIAMロールを作成 |
| ルール名 | nakayoshi-2 to nakayoshi-3 |
| 優先度 | 高 |
| ステータス | 有効 |
| バケットポリシー | メモっておく |
###設定後確認(検証結果)
以下のように、宛先が別のルールを追加することにより、グローバル設定のソースと送信先が書き換わってしまいます。
このことから、2箇所同時のレプリケーションは設定が行えないことが分かります。

  • ルール追加前
    2020-09-04 19_44_01-S3 Management Console.png

  • ルール追加後
    2020-09-04 19_59_23-S3 Management Console.png

さいごに

この記事では以下のことを確認しました。

  • レプリケーションのレプリケーションはできないこと
  • 複数宛先へのレプリケーションはできないこと

日常的に使いたくなりそうなユースケースではるものの、
できないものはできないので、争いのない世の中にしていきましょう。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?