LoginSignup
4
3

More than 5 years have passed since last update.

アクセスキーを意識しないでawscliを使いたい

Last updated at Posted at 2016-10-20

環境

uraura@rosemary$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.11.6
BuildVersion:   15G1004

概要

S3にあるファイルをローカルにダウンロードしたい,とかいう場合

  1. S3のオブジェクトを公開設定にしてブラウザでダウンロード
  2. IAMアクセスキーを発行し,ローカルマシンで適切に設定して aws s3 ...
  3. 適当な(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に付いた権限をローカルからも利用できるようになりました.おわり.

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3