はじめに
クラウドという言葉が当たり前になってきている現在、ファイルサーバは自前で持つ時代から、サービスとして利用する時代へと変わってきていると思います。
おそらく、自前のファイルサーバから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アカウントを持っていることを前提に説明します。
画像1. AWSサービス選択
(2) [Create Bucket]を押下し、S3バケットの作成をおこないます。
画像2. S3バケットの作成
(3)[Upload]ボタンを押下し、245MBの動画ファイルを30個(計7.3GB)をアップロードします。今回はこれらのファイル群をGCS上に移行してみます。
AWSのCredentailsの取得
S3からGCSへファイル移行をおこなうためには、移行元のAWSのCredentialsが必要となります。以下の手順からCredentialsを取得します。
(1) ヘッダメニューに表示されているアカウント名をクリックし、プルダウンされたメニューから[Security Credentials]を選択します。
画像4. Credentialsページ
(2)Credentailsページに遷移したら、[Access Key]タブをクリックし[Create New Access Key]ボタンを押下します。Credentials(Access Key IDとSecret Access Key)が生成されるので、ダウンロードボタンを押下してキー情報を保存します。
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上にコピーされたことが確認できます。
画像6. Google Developers Console
まとめ
以上がgsutilを利用したS3からGCSへのファイル移行手順となります。gsutilによって、非常に簡易にストレージ間のデータ移行ができることがわかったのではないでしょうか。
また、S3からGCSへのファイル移行としては、他にも Cloud Storage API を利用した方法があります。このAPIを利用した場合はOAuth2.0や Google のサービスアカウントを利用した移行も行うことができます。
次回は Cloud Storage API を利用した高度なデータ移行を取り上げようと思います。
今後もapps-gcpをぜひチェックしてください!