私が歌川です

@utgwkk が書いている

AWS CLIでの作業を /tmp で完結させたい

さまざまな出来事があります*1

サークルの共用サーバ*2/tmp にtweets.zip*3をダウンロードしてからS3にアップロードしていたのですが、同じような作業をいくらでもやりそうな気がしたのでメモを残しておきます。

一時ディレクトリに移動する

mktemp -d とかでサクッと作って移動しましょう。

$ cd `mktemp -d`

AWS CLIをインストールする

たぶんどのご家庭のサーバにもバージョンを問わずPythonが入っており、またpipも導入済みであると信じましょう。 ふつうに pip install awscli するとNFS上にインストールされて地獄を見るかもしれません。

幸いなことにpipでは --target オプションによってパッケージのインストール先を指定することができます。 これで一時ディレクトリ上にインストールしちゃいましょう。

キャッシュを保存してるとそれも重い原因になるかもしれません。 今のところ*4キャッシュの保存先をオプションで指定できないのでひとまず --no-cache-dir をします*5

$ pip install --no-cache-dir --target `pwd`/pip awscli

AWS CLIを使えるようにする

めでたくAWS CLIがインストールできましたね。

さて、 ./pip/bin/aws を実行すればAWS CLIを叩けるのですが、このファイルの実体はPythonスクリプトです。 多くの場合、いまインストールしたパッケージのインストール先は、Pythonのランタイムが走査する先として指定されていないと思います。 これをランタイムから見えるようにしましょう。

PYTHONPATH 環境変数にさきほど --target に渡したパスを指定してやればよいですが、何度も書くのは面倒なので export しちゃいます。 ついでに PATH にも入れましょう。

$ export PYTHONPATH=`pwd`/pip
$ export PATH=`pwd`/pip/bin:$PATH

これでAWS CLIが叩けるようになったと思います。

$ aws help

最後に認証情報の設定をしましょう。環境変数で済ませます。

$ export AWS_ACCESS_KEY_ID=WANNNYAKAFUNYAFUNYA
$ export AWS_SECRET_ACCESS_KEY=WANNYANNNYANNWANNMATSURI
$ export AWS_DEFAULT_REGION=ap-northeast-1

これでAWS CLIが使えるようになりましたね。存分に作業しましょう。

参考

*1:NFSが重い、ホームディレクトリがない(そんなことある?)、などなど。

*2:無料で使えて(無料ではない)高速なインターネット回線がある

*3:今はtweets.zipではなくなっている。

*4:pip version 19.2では

*5:ネットワークが十分に速いならリトライしてもそのほうが早い、たぶん……。