S3からCloud Storageへのコピー [GCP]

前提条件

  • 既にGoogle Cloud Platformでプロジェクトを作成されていること
  • AWS S3にアクセスするためのセキュリティキーをもっていること

設定ファイルの生成と編集

まずは以下のコマンドでオプション変更を行う.

Cloud Shellからターミナルを開いて以下のコマンドを実行.

gcloud config set pass_credentials_to_gsutil false

私の場合,なぜか上をしないと.botoが作れなかったので,とりあえずcredentialsをスキップするオプションをfalseにした.毎回認証するのでセキュリティ的には良くなっているだろう.

gsutil config

このコマンド実行後,verification codeが記されたURLが表示されるため,ここにアクセスし,取得したコードをコマンドラインに打ち込む.

実行が終了するとホームディレクトリ(~)に.botoという設定ファイルが生成されているはずだ.このファイルでAWSの認証設定を行う.vimなどで.botoを開き,23行目くらいにaws access key idとkeyを入力する箇所があるのでコメントアウトを外してここに入力.

vim ~/.boto
-------------
aws_access_key_id = <your aws access key ID>
aws_secret_access_key = <your aws secret access key>

gsutilコマンドの実行

ここまでくればいよいよS3からCloud Storageへのコピーができるようになる

gsutil -m rsync -r s3://hoge-workspace/hoge-database-s3/ gs://hoge-database-gcp

-m: ファイルをマルチプロセスによって並列実行で移行.ファイルが大量にある場合に指定すると効果的.

-r: サブディレクトリも含めた全てのファイルを移行することができ,aws s3 cp –recursiveと同様のオプション.指定しない場合,バケット直下のファイルのみ移行される.サブディレクトリ上のファイルも含め全ファイルを移行したい場合は本オプションが必須.

gsutil-m rsyncコマンドはファイル数が多い場合,途中で処理落ちのためフリーズすることがあるため,フリーズしたときはControl+Cで中断し,再度コマンドを打つことを何度か繰り返す必要がある.

Pocket