概要
S3互換のストレージサーバーとしてwasabiを使っています。運用中のサービスのバケットを別のバケットに移行したいという出来事があり、以降作業を行いました。wasabiに関する記事が少なかったので、作業手順をまとめます。
大まかな流れ
- 新しくバケットを作成する。
- aws cliで既存バケットのオブジェクトを新しいバケットに複製する。
前提
- aws cliがインストールされていること
- wasabiをすでに運用していること
手順
新しくバケットを作成
-
各情報を入力・選択する
Select Regionはサービス提供を行う地域に近いものを選択する。
Quick Setupは必要に応じて選択する。これは別のバケットの設定を引き継ぐことができる設定である。
-
これでバケットの作成ができました。
あとはポリシーなどを複製元と合わせて終わり。
aws cliで既存バケットのオブジェクトを新しいバケットに複製
実行コマンドのテンプレートは以下です。
s3 sync --region <リージョン名> s3://<複製元バケット名> s3://<複製先バケット名> --endpoint-url=https://s3.<リージョン名>.wasabisys.com --copy-props metadata-directive
例) リージョン:ap-northeast-1、複製元バケット名:origin、複製先バケット名:copy
s3 sync --region ap-northeast-1 s3://origin s3://copy --endpoint-url=https://s3.ap-northeast-1.wasabisys.com --copy-props metadata-directive
説明
-
s3 sync --region <リージョン名> s3://<複製元バケット名> s3://<複製先バケット名>
はs3を操作する時の記述と同一です。 -
--endpoint-url=https://s3.ap-northeast-1.wasabisys.com
でバケットのエンドポイントがwasabiであることを明示しています。 - AWS CLI v2の内部でタグに関する機能を使用する場合があり、Wasabiがタグ機能に対応していないため、
An error occurred (NoSuchTagSetError) when calling the GetObjectTagging operation: There is no tag set associated with the bucket.
というエラーが発生することがあります。それを回避するためにタグ機能を無効にする--copy-props metadata-directive
オプションを付与しています。