AWSの活用とデータ転送 -S3周辺について-
バイオインフォ道場、くまぞうです。
バイオインフォマティクスでのAWSの利用も良い点がたくさんあります。今回AWSを利用していたところ、S3からインスタンスへデータ転送したところ、データは正しいのにMD5でWarningが出ることに気がつきました。原因は、s3cmd(1.1.0)が古いことでした。新しくs3cmd(1.6.1)にアップデートしたところ解決しました。関連事項として、AWSのEC2・S3・ローカルPC間のデータ転送を中心にまとめます。
目次
AWSとは?
クラウド上にサーバーが構築できるEC2と、クラウド上に大きなストレージを確保できるS3が有名です。他にも様々なサービス提供が行われています。ウェブブラウザでも管理することが出来て、各種サービスを手軽に、そして効率良く利用することができます。
Amazon Web Services(アマゾン ウェブ サービス、AWS)とは、Amazon.com により提供されているクラウドコンピューティングサービス(ウェブサービス)である。これらのサービスは全世界で11の地域に提供されている。AWSの有名なサービスにAmazon Elastic Compute Cloud(EC2)とAmazon Simple Storage Service(S3)がある。これまでのクライアントが保有していた物理的なサーバファームと比較してAWSは大規模な計算処理能力を速やかに、かつ安価に提供出来る。
【出展】Wikipedia – Amazon Web Services
AWSをローカルPCで操作する
AWS Command Line Interface(AWS CLI)を使えば、EC2サーバー操作やS3・その他サービスの操作をローカルPCからコマンドライン経由で実行できます。今回は、ローカルPCからS3へのアップロードと、その逆でS3からローカルへPCへのダウンロードを行い、データ転送を確認しました。
AWS CLIでデータ転送
Amazon CLIを使って、ローカルPCとS3間でのデータ転送を確認しました。使ったコマンドは、aws s3のcpです。
インストール
$ curl -O https://s3.amazonaws.com/aws-cli/awscli-bundle.zip $ unzip awscli-bundle.zip $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
設定
$ /usr/local/bin/aws configure AWS Access Key ID [None]: xxxx <- input your ID AWS Secret Access Key [None]: xxxx <- input your Key Default region name [None]: xxxx <- input your default region name Default output format [None]:
データ転送の確認
$ /usr/local/bin/aws s3 cp mydata.txt s3://myfolder/ # PC -> s3 $ /usr/local/bin/aws s3 cp s3://myfolder/mydata.txt mydata_s3.txt # s3 -> PC
EC2とS3の連携
AWSの活用例としては、必要なときに生成して役目を果たしたら削除されるインスタンスであるEC2とは別に、恒久的なデータ置き場としてS3を使うケースが多いと思います。s3cmdを使うと、S3のバケット操作や、S3とEC2間でのデータ転送を簡単に行うことができます。比較的大きなデータを扱うことの多いバイオインフォマティクスの計算においても、解析データや結果データのやりとりが簡単にできると便利です。-【s3cmd】Amazon S3 Tools: Command Line S3 Client Software and S3 Backup -
今回は、冒頭のMD5のWarningが気になったので、s3cmdのアップデートを行いました。初回インストール時は、その他のツール同様、AccessKeyId・SecretKeyなどのconfigを設定する必要がありますが、今回は再設定なしでアップデートできました。INSTALLの記載内容に従ってインストールしました。今回はpipでのインストールです。依存に関しては、「Python 2.6 or newer (it is NOT compatible with Python 3.x)」だそうです。
s3cmdでデータ転送
s3cmdを使って、EC2とS3間でのデータ転送を確認しました。使ったコマンドは、getとputです。
インストール・アップデート
$ wget https://sourceforge.net/projects/s3tools/files/s3cmd/1.6.1/s3cmd-1.6.1.tar.gz $ tar xzvf s3cmd-1.6.1.tar.gz $ cd s3cmd-1.6.1/ $ less INSTALL # 様々なインストール方法があるので、適切なものを確認・選択します。 $ sudo pip install s3cmd $ s3cmd --version s3cmd version 1.6.1
データ転送の確認
s3cmd get s3://myfolder/mydata.txt . # S3 -> EC2 s3cmd put mydata_s3.txt s3://myfolder/mydata.txt . # EC2 -> S3