zsh で AWS CLI コマンドの補完を有効にしようとしたらちょっとだけ躓いた

AWS CLI のコマンドを Tab キーで補完することができると知ったので、実際にやってみました。内容は参考記事とほぼ同じで、シェルだけが違います。今回は zsh で AWS CLI コマンドの補完を有効にする方法のメモです。
AWS CLI のインストール方法によっては多少変わる部分があるとのことですが、自分の場合はその部分とは別の部分で躓きました。

前提

  • AWS CLI がインストールされている

AWS Command Line Interface をインストールする - AWS Command Line Interface

自分は バンドルされたインストーラを使用して インストールしていたようです。(後に躓いた原因)

やること

  1. AWS コンプリータ の場所を確認する
  2. .zshrc で AWS コンプリータ を読み込むようにする

1. AWS コンプリータ の場所を確認する

AWS CLI コマンドの補完をしてくれる AWS コンプリータ がある場所を確認します。

>>> which aws_completer
aws_completer not found

はい。いきなりおかしいですね。AWS CLI がインストールされていれば存在しているはずです。

>>> which aws
/usr/local/bin/aws

当たり前ですが aws コマンドは存在しています。
なんとなく /usr/local/bin/ にありそうな気はするので、一応確認してみます。

>>> ls -al /usr/local/bin/ | grep aws
lrwxr-xr-x   1 root  admin    22 12 22 12:13 aws -> /usr/local/aws/bin/aws

どうやら aws の実態は /usr/local/aws/bin/aws にあるようです。なので、 /usr/local/aws/bin/ 以下を確認してみます。

>>> ls -al /usr/local/aws/bin/ | grep aws
-rwxr-xr-x   1 root  wheel      824 12 22 12:13 aws
-rwxr-xr-x   1 root  wheel     1432 12 22 07:23 aws.cmd
-rwxr-xr-x   1 root  wheel      204 12 22 07:23 aws_bash_completer
-rwxr-xr-x   1 root  wheel     1145 12 22 12:13 aws_completer
-rwxr-xr-x   1 root  wheel     1807 12 22 07:23 aws_zsh_completer.sh

ありました。
バンドルされたインストーラを使用して AWS CLI をインストール した場合はこのような状態になっているようです。(どうやってインストールしたか忘れてた)

無事に AWS コンプリータ の場所がわかりました。
ただ、 aws_completer にPATH が通っていないので通しておきます。というか、 aws と同様にシンボリックリンクを作成しておきます。

>>> ln -s /usr/local/aws/bin/aws_completer /usr/local/bin/aws_completer
>>> which aws_completer
/usr/local/bin/aws_completer

2. .zshrc で AWS コンプリータ を読み込むようにする

AWS コンプリータ を .zshrc で読み込むようにします。

source /usr/local/aws/bin/aws_zsh_completer.sh

上の 1 行を .zshrc に追記して、再読込します。

>>> source ~/.zshrc

これで AWS CLI コマンドの補完が有効になりました。試しに aws codecommit まで打って Tab キーを押してみると、次のように候補が出てきます。

>>> aws codecommit
batch-get-repositories              delete-file                         get-comments-for-pull-request       get-repository                      post-comment-for-pull-request       update-pull-request-description
create-branch                       delete-repository                   get-commit                          get-repository-triggers             post-comment-reply                  update-pull-request-status
create-pull-request                 describe-pull-request-events        get-differences                     list-branches                       put-file                            update-pull-request-title
create-repository                   get-blob                            get-file                            list-pull-requests                  put-repository-triggers             update-repository-description
credential-helper                   get-branch                          get-folder                          list-repositories                   test-repository-triggers            update-repository-name
delete-branch                       get-comment                         get-merge-conflicts                 merge-pull-request-by-fast-forward  update-comment
delete-comment-content              get-comments-for-compared-commit    get-pull-request                    post-comment-for-compared-commit    update-default-branch

これで色々と捗りそうです。

comments powered by Disqus