環境
uraura@rosemary$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1004
概要
S3にあるファイルをローカルにダウンロードしたい,とかいう場合
- S3のオブジェクトを公開設定にしてブラウザでダウンロード
- IAMアクセスキーを発行し,ローカルマシンで適切に設定して
aws s3 ...
- 適当な(S3へのアクセスが可能な)EC2へsshし,そこでダウンロードしてscpでローカルへ
あたりが考えられますが,
(1)はデータによっては一番簡単ですが,システムのバックアップデータとかだとちょっと無理です.
(2)なら一度設定してしまえば他のコマンドもたたけるようになりますし良さそうですが,個人のマシンでアクセスキーが漏洩しないようきちんと管理しなければなりません.
(3)はssh/scpを毎度毎度やるのが面倒なうえに,EC2上にゴミが残りがちになります.
などなど,どれもめんどうです.もうちょっとイケてるやりかたを考えてみます.
やりたいこと
- ローカルのawscliを使いたい
- アクセスキーを個人で管理したく/させたくない
やったこと
適当なEC2(bastion)を用意
個人でアクセスキーを管理させたくないので,InstanceProfileを付けたEC2を利用します.
とりあえず以下,amazon linuxです.
yum install -y --enablerepo=epel tinyproxy
service tinyproxy start
これで,bastion:8888
をHTTPプロキシとして利用できるようになります.
ローカルマシンの設定
SecurityGroup等でIP制限ができるのであればそれでも良いでしょう.
とりあえず今回はSSHのローカルポートフォワードで設定します.
~/.ssh/config
Host bastion
:
LocalForward 8888 localhost:8888
:
あとは,以下のように
ssh -fN bastion &> /dev/null
HTTP_PROXY=http://127.0.0.1:8888 HTTPS_PROXY=http://127.0.0.1:8888 aws s3 ls
ssh接続された状態,かつHTTP_PROXY/HTTPS_PROXYをセットした状態で,ローカルでawscliをたたけばokです.
これでEC2に付いた権限をローカルからも利用できるようになりました.おわり.