S3からGCSへ簡単にファイル移行する方法

ご注意

この記事は 2014年9月4日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

はじめに

クラウドという言葉が当たり前になってきている現在、ファイルサーバは自前で持つ時代から、サービスとして利用する時代へと変わってきていると思います。 おそらく、自前のファイルサーバからGoogle Cloud Storage(以下GCS)やAmazon Simple Storage Sewrvice(以下S3)等のストレージサービスに乗り換えた企業も少なくはないのではないでしょうか。 ただ、今後は価格やパフォーマンスの競争によって、クラウドからクラウドへの移行も増えてくると思われます。というわけで、今回のapps-gcpでは「ストレージの移行」について取り上げます。 ずばり、S3からGCSへのストレージ間データ移行です。GoogleはS3からGCSへのファイル移行のために標準的な仕組みを提供しています。 本記事では、gsutilを利用して簡単にS3からGCSへファイル移行をおこなうための手順について説明します。  

移行手順

それでは、実際にS3からGCSへファイルを移行してみましょう。本章では、S3上にファイルをアップロードし、それらのファイルをGCS上に移行するまでの手順について説明します。  

S3(移行元)へのファイルアップロード

(1) AWS Management Consoleにログインします。ログインしたら、ヘッダメニューの[Services]から[S3]を選択します。 ※AWSアカウントを持っていることを前提に説明します。 s3_select

画像1. AWSサービス選択

(2) [Create Bucket]を押下し、S3バケットの作成をおこないます。 bucketlist2

画像2. S3バケットの作成

(3)[Upload]ボタンを押下し、245MBの動画ファイルを30個(計7.3GB)をアップロードします。今回はこれらのファイル群をGCS上に移行してみます。

30ko  画像3. S3バケットへのファイルのアップロード

 

AWSのCredentailsの取得

S3からGCSへファイル移行をおこなうためには、移行元のAWSのCredentialsが必要となります。以下の手順からCredentialsを取得します。   (1) ヘッダメニューに表示されているアカウント名をクリックし、プルダウンされたメニューから[Security Credentials]を選択します。 header

画像4. Credentialsページ

(2)Credentailsページに遷移したら、[Access Key]タブをクリックし[Create New Access Key]ボタンを押下します。Credentials(Access Key IDとSecret Access Key)が生成されるので、ダウンロードボタンを押下してキー情報を保存します。

accessKey 画像5. Credentials情報の取得

 

gsutilの設定

次にgsutilの設定ファイルにS3のCredentials情報を設定します。設定手順は以下の通りです。   ※本記事では、gsutilがセットアップされていることを前提とします。gsutilはGoogle Cloud SDKをインストールすることで利用可能です。インストールする場合は、以下のリンクを参考にSDKのインストールをおこなってください。 https://developers.google.com/cloud/sdk/   (1)設定ファイル(.boto)の生成 設定ファイルを生成するためには以下のコマンドを実行します。OAuth用のURLが生成されるので移行先のGCPプロジェクトのOwnerアカウントで認証をおこなってください。認証に成功すると、設定ファイルが生成されます。
$ gsutil config
  (2)設定ファイルの編集 ファイル編集コマンドを実行し、「aws_access_key_id」と「aws_secret_access_key」が記載された行のコメントアウトをはずし、さきほどAWSコンソールで取得したCredentials情報を入力します。入力が完了したら設定ファイルを保存します。
$ vi .boto  —————————————————————– #aws_access_key_id = <your aws access key ID> #aws_secret_access_key = <your aws secret access key>
 

gsutilコマンドの実行

それでは、実際に移行コマンドを実行してみます。S3にアップロードしたファイル群をGCS上に移行してみましょう。   (1) S3の指定バケット上にある全てのファイルをGCS上に移行する場合は以下のコマンドを実行します。S3バケットのURIは「s3://バケット名」のフォーマットで指定します。 ※実行時間を計測するため、timeコマンドを利用します。
time gsutil -m rsync -r s3://yoshidumi-apps-gcp gs://yoshidumi-apps-gcp
※オプションの説明は以下の通りです。   -m: ファイルをマルチプロセスによって並列実行で移行することができます。ファイルが大量にある場合に指定すると効果的なオプションとなります。 -r: サブディレクトリも含めた全てのファイルを移行することができます。指定しない場合は、バケット直下のファイルのみ移行されます。本記事ではS3のバケット直下にファイルをアップロードしているので、本オプションが無しでも問題なく実行できますが、サブディレクトリ上のファイルも含め全ファイルを移行したい場合は本オプションが必須となります。  

実行結果の確認

コマンド実行後の結果を確認してみましょう。   (1)計測時間の確認 245MB×30ファイル(計7.3GB)の移行時間は以下の通りの結果が出ました。
$ time gsutil -m rsync -r s3://yoshidumi-apps-gcp gs://yoshidumi-apps-gcp  …… real11m21.104s user17m36.634s sys13m58.144s
  (2) GCSストレージの確認 Google Developers Consoleにログインし、ストレージを確認してみます。ファイルがGCS上にコピーされたことが確認できます。 gcs_browser

画像6. Google Developers Console

 

まとめ

以上がgsutilを利用したS3からGCSへのファイル移行手順となります。gsutilによって、非常に簡易にストレージ間のデータ移行ができることがわかったのではないでしょうか。 また、S3からGCSへのファイル移行としては、他にも Cloud Storage API を利用した方法があります。このAPIを利用した場合はOAuth2.0や Google のサービスアカウントを利用した移行も行うことができます。 次回は Cloud Storage API を利用した高度なデータ移行を取り上げようと思います。   今後もapps-gcpをぜひチェックしてください!

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら