S3 to GCS をするには、S3 -> ローカル -> GCS の方法と、
Cloud Storage Transfer Serviceを利用する方法があるみたいです。1 2
Cloud Storage Transfer Serviceはローカルを介さずなので、実行環境の整備の手間が少なそうなことや速度的なメリットがありそうなので使ってみました。
コスト
https://cloud.google.com/storage-transfer/pricing
驚く様な費用請求がされることは無さそう
権限の設定
- roles/storagetransfer.user を与えれば、コンソールが活性化され、後の工程でジョブの設定が可能です。 3
ソース (転送元)とシンク(転送先)を設定して使用するには追加のアクセス許可が必要です。
詳しいことはデータソースとデータシンクへのアクセスの構成を読む。4
転送設定とジョブの実行
-
ソースの選択
-
S3を選択する
-
ソースに関しては転送パスを指定できる 5
-
input/20190906
を指定すると、S3のinput/20190906
のフォルダを転送できる - 何も指定しないとバケット内の全てが転送される
-
-
-
転送先の選択
-
転送の設定
-
転送ジョブの確認
-
転送結果
所感
- 再マッピングはサポートされていない6のが何とも使いづらい
- web Consoleから操作できるので、エンジニア以外でも簡単に設定できそうなところが良い
- 1回切りのジョブの場合、すぐに転送が始まるため小さなファイルの転送でも問題無さそう
- 転送データが大きな際はS3 -> ローカル -> GCSより早そう(未検証)
gsutil と Storage Transfer Service のどちらを使うべきか
公式に記載がありました 7
-
https://cloud.google.com/storage-transfer/docs/access-control ↩
-
よくわからないけれど、web consoleからjobを動かした限りだとサービスアカウントを作成しなくても動いた ↩
-
https://cloud.google.com/storage-transfer/docs/create-manage-transfer-console#select ↩
-
https://cloud.google.com/storage-transfer/docs/create-manage-transfer-console#select ↩
-
https://cloud.google.com/storage-transfer/docs/overview#should_you_use_gsutil_or ↩