まえがき
弊社、全ての部署で1つのAWSアカウントを共有しており、どのリソースをどの部署が管理しているのか誰も全容を把握しておりません
今更ながらそれ不味いだろうという事で、自分の部署のリソースを別アカウントに移行する事を決意
S3の移行を任されたため、まずレプリケーションでオブジェクトを移動します
今後のために手順をメモとして残します
移行元/移行先s3バケット作成
移行元s3バケットを作成
- 移行先s3バケットと同じリージョンに作成する必要あり(東京だとap-northeast-1)
- バージョニングが有効化されている必要あり
移行元s3に必要なバケットポリシー
なし
{}
移行先s3バケットを作成
- 移行元s3バケットと同じリージョンに作成する必要あり(東京だとap-northeast-1)
- バージョニングが有効化されている必要あり
移行先s3に必要なバケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[移行先バケット名]/*"
},
{
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:ReplicateObject",
"s3:ReplicateDelete"
],
"Resource": "arn:aws:s3:::[移行先バケット名]/*"
},
{
"Sid": "Permissions on bucket",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:List*",
"s3:GetBucketVersioning",
"s3:PutBucketVersioning"
],
"Resource": "arn:aws:s3:::[移行先バケット名]"
}
]
}
レプリケーションルールの設定
移行元バケット → 管理 → レプリケーションルール → レプリケーションルールを作成
レプリケーションルールの設定
レプリケーションルール名
適当でOK。「移行先バケット名_replication」とか
ステータス
有効
ソースバケット
ルールスコープを選択
バケット内のすべてのオブジェクトに適用
送信先
送信先
別のアカウントのバケットを指定する
アカウント ID
移行先AWSアカウントid 12桁の数字
バケット名
移行先s3バケット名
IAM ロール
既存の IAM ロールから選択
IAM ロール
新しいロールの作成
暗号化
AWS Key Management Service (AWS KMS)で暗号化されたオブジェクトをレプリケーション
バケットが暗号化されていればチェック
送信先ストレージクラス
レプリケートされたオブジェクト用のストレージクラスを変更
必要であれば変更
追加のレプリケーションオプション
必要であればチェックして保存ボタン
既存のオブジェクトをレプリケートしますか?のモーダル
移行元に既に入っているオブジェクトも必要であれば「はい」にして送信
バッチオペレーションジョブを作成します
ジョブ設定
準備ができたらジョブを自動的に実行します
完了レポート
完了レポートの生成
失敗したタスクのみ。成功したのは不要。
完了レポートの送信先へのパス
レポートの保存先を指定。
アクセス許可
既存の IAM ロールから選択 - 新しいロールの作成
バッチオペレーションでレプリケーション進捗を確認する
バッチオペレーション(東京リージョン)
https://s3.console.aws.amazon.com/s3/jobs?region=ap-northeast-1
ステータスが「完了済み」になったらOK
失敗した合計が 0% でなければ、ログを確認する
参考