Denen blog

株式会社電縁の社員によるブログです。

EC2にマウントしたS3にssh+rsyncしたら遅かったのでAWS CLIを試してみようとしたらCentOS6だったのでちょっと面倒だった件

f:id:yasuaki-sakai:20170607123057j:plain

こんにちは、イノベーションオフィスの吉田です。

タイトルが長いですが、要約するとそんな感じです。

 

発端は2週間ほど前に書いた以下の記事に遡ります。

denen.hatenablog.com

無事 EC2 に S3 がマウント出来たので、別のサーバからデータを転送してみました。

そしたら思ったよりもスピードが出なかったので AWS CLI を試すことにしました。

ところがサーバの OS が CentOS6 で Python が古く awscli がインストール出来ない・・・

じゃあアップデートしようとしたら pyenv で BUILD FAILED とか出る始末・・・

と言うわけで順番に解決してみました。

 

1.curl のアップデート

pyenv で出るエラーは「SSL Connection Error」でした。

これは以下を参考にしました。

thr3a.hatenablog.com

nss を更新しないといけないんですね。

というわけで以下で解決しました。

yum update curl nss

 

2.Python のアップデート

pyenv が動作するようになったら Python のアップデートを行います。

以下のサイトの「CentOS6」のとこが参考になるかと思います。

qiita.com

# git で取得
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

# 環境変数の設定
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

# pyenv に必要なライブラリをインストール
yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite3 sqlite-devel openssl-devel

# インストール
pyenv install 3.6.0

# バージョン確認
python --version

 

3.AWS CLI のインストールと設定

ここまで出来たらいよいよ AWS CLI のインストールです。

先ほどのサイトを引き続き参考にします。

# awscli のインストール
pip install awscli --upgrade --user

# パスを通す
echo 'PATH=$PATH:~/.local/bin' >> ~/.bash_profile
source ~/.bash_profile

# バージョン確認
aws --version

最後は認証情報の設定です。

設定時はプロファイル名を設定するのがオススメです。

aws configure --profile=PROFILE_NAME

AWS Access Key ID [None]: ****
AWS Secret Access Key [None]: ****
Default region name [None]: ap-northeast-1
Default output format [None]: json

これで準備が出来ました!

 

4.ファイルの転送

というわけで一括転送してみます。

一括転送の場合は sync がオススメです。

aws s3 sync /my/file/path/ s3://my-bucket-name/ --profile=PROFILE_NAME

詳しくは以下のドキュメントを参照してください。

sync — AWS CLI 1.15.66 Command Reference

 

いかがでしたでしょうか?

ちなみに、これでサクサク転送できる!と思ったら現サーバ側の帯域の問題でスピードはほとんど変わりませんでした・・・

そうなったら tar.gz とかにして転送するしかないかもです。

 

それでは!

 

書いた人:イノベーションオフィス 室長 吉田

f:id:yasuaki-sakai:20171204190702j:plain