Ubuntuでawscliを使うための準備

Ubuntuでawscliを使うための準備
==============================

[AWS CodeCommit](http://aws.amazon.com/jp/codecommit/) を使う機会があったのですが、そもそもawscliを入れていなかったのでまずはそこから。


# 1. 準備

[Installing the AWS Command Line Interface](http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/installing.html) によるとpipでインストールするのが良さそう。システム要件は下記の通り。

- Prerequisites
    - Windows, Linux, OS X, or Unix
    - Python 2 version 2.6.5+ or Python 3 version 3.3+
    - Pip

手元のUbuntu 14.04の環境だとpythonは2.7系と3.4系が入っていたので、3.4を使うことにします。
少し前にOSを再インストールしてから開発系のパッケージを追加していないので依存関係で色々入ってきました。

```bash
$ sudo apt-get install python3-pip
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  build-essential dpkg-dev g++ g++-4.8 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libexpat1-dev
  libpython3-dev libpython3.4-dev libstdc++-4.8-dev python-chardet-whl
  python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl
  python-requests-whl python-setuptools-whl python-six-whl python-urllib3-whl
  python3-colorama python3-dev python3-distlib python3-html5lib
  python3-setuptools python3-wheel python3.4-dev
提案パッケージ:
  debian-keyring g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg
  libstdc++-4.8-doc python3-genshi
以下のパッケージが新たにインストールされます:
  build-essential dpkg-dev g++ g++-4.8 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libexpat1-dev
  libpython3-dev libpython3.4-dev libstdc++-4.8-dev python-chardet-whl
  python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl
  python-requests-whl python-setuptools-whl python-six-whl python-urllib3-whl
  python3-colorama python3-dev python3-distlib python3-html5lib python3-pip
  python3-setuptools python3-wheel python3.4-dev
アップグレード: 0 個、新規インストール: 28 個、削除: 0 個、保留: 0 個。
45.9 MB のアーカイブを取得する必要があります。
この操作後に追加で 85.7 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main libexpat1-dev amd64 2.1.0-4ubuntu1 [115 kB]
取得:2 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main libpython3.4-dev amd64 3.4.0-2ubuntu1.1 [27.0 MB]
取得:3 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main libstdc++-4.8-dev amd64 4.8.4-2ubuntu1~14.04 [1,052 kB]
取得:4 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main g++-4.8 amd64 4.8.4-2ubuntu1~14.04 [15.0 MB]
取得:5 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main g++ amd64 4:4.8.2-1ubuntu6 [1,490 B]
取得:6 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main dpkg-dev all 1.17.5ubuntu5.4 [726 kB]
取得:7 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main build-essential amd64 11.6ubuntu6 [4,838 B]
取得:8 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main libalgorithm-diff-perl all 1.19.02-3 [50.0 kB]
取得:9 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main libalgorithm-diff-xs-perl amd64 0.04-2build4 [12.6 kB]
取得:10 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main libalgorithm-merge-perl all 0.08-2 [12.7 kB]
取得:11 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main libpython3-dev amd64 3.4.0-0ubuntu2 [7,002 B]
取得:12 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python-chardet-whl all 2.2.1-2~ubuntu1 [170 kB]
取得:13 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python-colorama-whl all 0.2.5-0.1ubuntu2 [18.2 kB]
取得:14 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python-distlib-whl all 0.1.8-1ubuntu1 [140 kB]
取得:15 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python-html5lib-whl all 0.999-3~ubuntu1 [109 kB]
取得:16 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python-six-whl all 1.5.2-1ubuntu1 [10.5 kB]
取得:17 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python-urllib3-whl all 1.7.1-1ubuntu3 [64.0 kB]
取得:18 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python-requests-whl all 2.2.1-1ubuntu0.3 [227 kB]
取得:19 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python-setuptools-whl all 3.3-1ubuntu2 [244 kB]
取得:20 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python-pip-whl all 1.5.4-1ubuntu3 [111 kB]
取得:21 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python3-colorama all 0.2.5-0.1ubuntu2 [12.0 kB]
取得:22 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python3.4-dev amd64 3.4.0-2ubuntu1.1 [425 kB]
取得:23 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty/main python3-dev amd64 3.4.0-0ubuntu2 [1,192 B]
取得:24 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python3-distlib all 0.1.8-1ubuntu1 [113 kB]
取得:25 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python3-html5lib all 0.999-3~ubuntu1 [79.7 kB]
取得:26 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python3-setuptools all 3.3-1ubuntu2 [144 kB]
取得:27 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/universe python3-pip all 1.5.4-1ubuntu3 [80.3 kB]
取得:28 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu/ trusty-updates/main python3-wheel all 0.24.0-1~ubuntu1 [44.8 kB]
45.9 MB を 14秒 で取得しました (3,102 kB/s)                                    
以前に未選択のパッケージ libexpat1-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 209662 個のファイルとディレクトリがインストールされています。)
Preparing to unpack .../libexpat1-dev_2.1.0-4ubuntu1_amd64.deb ...
Unpacking libexpat1-dev:amd64 (2.1.0-4ubuntu1) ...
以前に未選択のパッケージ libpython3.4-dev:amd64 を選択しています。
Preparing to unpack .../libpython3.4-dev_3.4.0-2ubuntu1.1_amd64.deb ...
Unpacking libpython3.4-dev:amd64 (3.4.0-2ubuntu1.1) ...
以前に未選択のパッケージ libstdc++-4.8-dev:amd64 を選択しています。
Preparing to unpack .../libstdc++-4.8-dev_4.8.4-2ubuntu1~14.04_amd64.deb ...
Unpacking libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04) ...
以前に未選択のパッケージ g++-4.8 を選択しています。
Preparing to unpack .../g++-4.8_4.8.4-2ubuntu1~14.04_amd64.deb ...
Unpacking g++-4.8 (4.8.4-2ubuntu1~14.04) ...
以前に未選択のパッケージ g++ を選択しています。
Preparing to unpack .../g++_4%3a4.8.2-1ubuntu6_amd64.deb ...
Unpacking g++ (4:4.8.2-1ubuntu6) ...
以前に未選択のパッケージ dpkg-dev を選択しています。
Preparing to unpack .../dpkg-dev_1.17.5ubuntu5.4_all.deb ...
Unpacking dpkg-dev (1.17.5ubuntu5.4) ...
以前に未選択のパッケージ build-essential を選択しています。
Preparing to unpack .../build-essential_11.6ubuntu6_amd64.deb ...
Unpacking build-essential (11.6ubuntu6) ...
以前に未選択のパッケージ libalgorithm-diff-perl を選択しています。
Preparing to unpack .../libalgorithm-diff-perl_1.19.02-3_all.deb ...
Unpacking libalgorithm-diff-perl (1.19.02-3) ...
以前に未選択のパッケージ libalgorithm-diff-xs-perl を選択しています。
Preparing to unpack .../libalgorithm-diff-xs-perl_0.04-2build4_amd64.deb ...
Unpacking libalgorithm-diff-xs-perl (0.04-2build4) ...
以前に未選択のパッケージ libalgorithm-merge-perl を選択しています。
Preparing to unpack .../libalgorithm-merge-perl_0.08-2_all.deb ...
Unpacking libalgorithm-merge-perl (0.08-2) ...
以前に未選択のパッケージ libpython3-dev:amd64 を選択しています。
Preparing to unpack .../libpython3-dev_3.4.0-0ubuntu2_amd64.deb ...
Unpacking libpython3-dev:amd64 (3.4.0-0ubuntu2) ...
以前に未選択のパッケージ python-chardet-whl を選択しています。
Preparing to unpack .../python-chardet-whl_2.2.1-2~ubuntu1_all.deb ...
Unpacking python-chardet-whl (2.2.1-2~ubuntu1) ...
以前に未選択のパッケージ python-colorama-whl を選択しています。
Preparing to unpack .../python-colorama-whl_0.2.5-0.1ubuntu2_all.deb ...
Unpacking python-colorama-whl (0.2.5-0.1ubuntu2) ...
以前に未選択のパッケージ python-distlib-whl を選択しています。
Preparing to unpack .../python-distlib-whl_0.1.8-1ubuntu1_all.deb ...
Unpacking python-distlib-whl (0.1.8-1ubuntu1) ...
以前に未選択のパッケージ python-html5lib-whl を選択しています。
Preparing to unpack .../python-html5lib-whl_0.999-3~ubuntu1_all.deb ...
Unpacking python-html5lib-whl (0.999-3~ubuntu1) ...
以前に未選択のパッケージ python-six-whl を選択しています。
Preparing to unpack .../python-six-whl_1.5.2-1ubuntu1_all.deb ...
Unpacking python-six-whl (1.5.2-1ubuntu1) ...
以前に未選択のパッケージ python-urllib3-whl を選択しています。
Preparing to unpack .../python-urllib3-whl_1.7.1-1ubuntu3_all.deb ...
Unpacking python-urllib3-whl (1.7.1-1ubuntu3) ...
以前に未選択のパッケージ python-requests-whl を選択しています。
Preparing to unpack .../python-requests-whl_2.2.1-1ubuntu0.3_all.deb ...
Unpacking python-requests-whl (2.2.1-1ubuntu0.3) ...
以前に未選択のパッケージ python-setuptools-whl を選択しています。
Preparing to unpack .../python-setuptools-whl_3.3-1ubuntu2_all.deb ...
Unpacking python-setuptools-whl (3.3-1ubuntu2) ...
以前に未選択のパッケージ python-pip-whl を選択しています。
Preparing to unpack .../python-pip-whl_1.5.4-1ubuntu3_all.deb ...
Unpacking python-pip-whl (1.5.4-1ubuntu3) ...
以前に未選択のパッケージ python3-colorama を選択しています。
Preparing to unpack .../python3-colorama_0.2.5-0.1ubuntu2_all.deb ...
Unpacking python3-colorama (0.2.5-0.1ubuntu2) ...
以前に未選択のパッケージ python3.4-dev を選択しています。
Preparing to unpack .../python3.4-dev_3.4.0-2ubuntu1.1_amd64.deb ...
Unpacking python3.4-dev (3.4.0-2ubuntu1.1) ...
以前に未選択のパッケージ python3-dev を選択しています。
Preparing to unpack .../python3-dev_3.4.0-0ubuntu2_amd64.deb ...
Unpacking python3-dev (3.4.0-0ubuntu2) ...
以前に未選択のパッケージ python3-distlib を選択しています。
Preparing to unpack .../python3-distlib_0.1.8-1ubuntu1_all.deb ...
Unpacking python3-distlib (0.1.8-1ubuntu1) ...
以前に未選択のパッケージ python3-html5lib を選択しています。
Preparing to unpack .../python3-html5lib_0.999-3~ubuntu1_all.deb ...
Unpacking python3-html5lib (0.999-3~ubuntu1) ...
以前に未選択のパッケージ python3-setuptools を選択しています。
Preparing to unpack .../python3-setuptools_3.3-1ubuntu2_all.deb ...
Unpacking python3-setuptools (3.3-1ubuntu2) ...
以前に未選択のパッケージ python3-pip を選択しています。
Preparing to unpack .../python3-pip_1.5.4-1ubuntu3_all.deb ...
Unpacking python3-pip (1.5.4-1ubuntu3) ...
以前に未選択のパッケージ python3-wheel を選択しています。
Preparing to unpack .../python3-wheel_0.24.0-1~ubuntu1_all.deb ...
Unpacking python3-wheel (0.24.0-1~ubuntu1) ...
Processing triggers for doc-base (0.10.5) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
libexpat1-dev:amd64 (2.1.0-4ubuntu1) を設定しています ...
libpython3.4-dev:amd64 (3.4.0-2ubuntu1.1) を設定しています ...
libstdc++-4.8-dev:amd64 (4.8.4-2ubuntu1~14.04) を設定しています ...
g++-4.8 (4.8.4-2ubuntu1~14.04) を設定しています ...
g++ (4:4.8.2-1ubuntu6) を設定しています ...
update-alternatives: /usr/bin/c++ (c++) を提供するために 自動モード で /usr/bin/g++ を使います
dpkg-dev (1.17.5ubuntu5.4) を設定しています ...
build-essential (11.6ubuntu6) を設定しています ...
libalgorithm-diff-perl (1.19.02-3) を設定しています ...
libalgorithm-diff-xs-perl (0.04-2build4) を設定しています ...
libalgorithm-merge-perl (0.08-2) を設定しています ...
libpython3-dev:amd64 (3.4.0-0ubuntu2) を設定しています ...
python-chardet-whl (2.2.1-2~ubuntu1) を設定しています ...
python-colorama-whl (0.2.5-0.1ubuntu2) を設定しています ...
python-distlib-whl (0.1.8-1ubuntu1) を設定しています ...
python-html5lib-whl (0.999-3~ubuntu1) を設定しています ...
python-six-whl (1.5.2-1ubuntu1) を設定しています ...
python-urllib3-whl (1.7.1-1ubuntu3) を設定しています ...
python-requests-whl (2.2.1-1ubuntu0.3) を設定しています ...
python-setuptools-whl (3.3-1ubuntu2) を設定しています ...
python-pip-whl (1.5.4-1ubuntu3) を設定しています ...
python3-colorama (0.2.5-0.1ubuntu2) を設定しています ...
python3.4-dev (3.4.0-2ubuntu1.1) を設定しています ...
python3-dev (3.4.0-0ubuntu2) を設定しています ...
python3-distlib (0.1.8-1ubuntu1) を設定しています ...
python3-html5lib (0.999-3~ubuntu1) を設定しています ...
python3-setuptools (3.3-1ubuntu2) を設定しています ...
python3-pip (1.5.4-1ubuntu3) を設定しています ...
python3-wheel (0.24.0-1~ubuntu1) を設定しています ...
```

```bash
$ pip3 --version
pip 1.5.4 from /usr/lib/python3/dist-packages (python 3.4)
```

コマンドの後ろに"3"が付くので2.7系が良かったかも……


# 2. awscliのインストール

awscliをインストールします。
2.7系のpipをインストールした場合はpip3をpipに読み替えてください。

```bash
$ sudo pip3 install awscli
Downloading/unpacking awscli
  Downloading awscli-1.7.39-py2.py3-none-any.whl (722kB): 722kB downloaded
Requirement already satisfied (use --upgrade to upgrade): colorama>=0.2.5,<=0.3.3 in /usr/lib/python3/dist-packages (from awscli)
Downloading/unpacking docutils>=0.10 (from awscli)
  Downloading docutils-0.12-py3-none-any.whl (508kB): 508kB downloaded
Downloading/unpacking botocore==1.1.2 (from awscli)
  Downloading botocore-1.1.2-py2.py3-none-any.whl (1.8MB): 1.8MB downloaded
Downloading/unpacking rsa>=3.1.2,<=3.1.4 (from awscli)
  Downloading rsa-3.1.4.tar.gz
  Running setup.py (path:/tmp/pip_build_root/rsa/setup.py) egg_info for package rsa
    
    warning: no files found matching 'README'
Downloading/unpacking python-dateutil>=2.1,<3.0.0 (from botocore==1.1.2->awscli)
  Downloading python_dateutil-2.4.2-py2.py3-none-any.whl (188kB): 188kB downloaded
Downloading/unpacking jmespath==0.7.1 (from botocore==1.1.2->awscli)
  Downloading jmespath-0.7.1-py2.py3-none-any.whl
Downloading/unpacking pyasn1>=0.1.3 (from rsa>=3.1.2,<=3.1.4->awscli)
  Downloading pyasn1-0.1.8.tar.gz (75kB): 75kB downloaded
  Running setup.py (path:/tmp/pip_build_root/pyasn1/setup.py) egg_info for package pyasn1
    
Requirement already satisfied (use --upgrade to upgrade): six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.1,<3.0.0->botocore==1.1.2->awscli)
Installing collected packages: awscli, docutils, botocore, rsa, python-dateutil, jmespath, pyasn1
  Running setup.py install for rsa
    
    warning: no files found matching 'README'
    Installing pyrsa-keygen script to /usr/local/bin
    Installing pyrsa-decrypt script to /usr/local/bin
    Installing pyrsa-priv2pub script to /usr/local/bin
    Installing pyrsa-decrypt-bigfile script to /usr/local/bin
    Installing pyrsa-verify script to /usr/local/bin
    Installing pyrsa-sign script to /usr/local/bin
    Installing pyrsa-encrypt-bigfile script to /usr/local/bin
    Installing pyrsa-encrypt script to /usr/local/bin
  Running setup.py install for pyasn1
    
Successfully installed awscli docutils botocore rsa python-dateutil jmespath pyasn1
Cleaning up...
```

インストールが終わったらコマンドを確認します。

```bash
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/1.7.39 Python/3.4.0 Linux/3.13.0-57-generic
```


# 3. bashでawsコマンドを補完する

bashでawsコマンドが補完されるようにします。

```bash
$ which aws_completer
/usr/local/bin/aws_completer
$ complete -C "/usr/local/bin/aws_completer" aws
$ cat <<-'_EOT_' >> ~/.bashrc

complete -C "/usr/local/bin/aws_completer" aws
_EOT_
```

tabキーを押すと補完されるようになります。

```bash
$ aws (tab)
autoscaling         ds                  machinelearning 
cloudformation      dynamodb            opsworks 
cloudfront          dynamodbstreams     rds 
cloudhsm            ec2                 redshift 
cloudsearch         ecs                 route53 
cloudsearchdomain   efs                 route53domains 
cloudtrail          elasticache         s3 
cloudwatch          elasticbeanstalk    s3api 
codecommit          elastictranscoder   sdb 
codepipeline        elb                 ses 
cognito-identity    emr                 sns 
cognito-sync        glacier             sqs 
configservice       iam                 ssm 
configure           importexport        storagegateway 
datapipeline        kinesis             sts 
deploy              kms                 support 
devicefarm          lambda              swf 
directconnect       logs                workspaces 
```


# 参考

- [Installing the AWS Command Line Interface](http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/installing.html)
- [aws-cliをタブキーで補完する - Qiita](http://qiita.com/szk3/items/dfba6ec3cefdefb35060)