EB CLIのセットアップスクリプトを使ってみた

eb-cliはawsのElasticBeanstalkのプロジェクトをコマンドラインから操作できるツールになります。
以前はマニュアルでインストールしたのですがインストールスクリプトが用意されていたので使ってみた記録です。
このセットアップスクリプトを使うとeb-cliを仮想環境にインストールする形になるので
他のpythonスクリプトとの競合を防ぐことができるようになるとのこと。
個人的な印象では事前準備が結構あるので手動インストールに比べて楽という印象は薄かったです。

以下のサイトをベースに進めていきます。

https://github.com/aws/aws-elastic-beanstalk-cli-setup

※MacOSベースでの解説になります。
M1Mac,MacOS12.5

### 参考

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3-install.html

# 事前準備
セットアップする前にGit,pyenv,virtualenvの３つをインストールしなければならないとのことでした。

## Gitインストール
自分の場合はインストール済みでしたが以下のようにインストールできるとのことでしたので書いておきます。

インストールにはhomebrewというMacのパッケージ管理ソフトが必要なのでそちらも入っていないという方は以下のコマンドからインストールしておきましょう。

```brew.sh
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
% brew --version
```
バージョンが表示されたらhomebrewのインストールは完了です。

```brew.sh
% brew install git
% git --version
```

gitのバージョンが表示されたらgitのインストールは完了です。

### 参考サイト
https://qiita.com/suke_masa/items/4bed855628f7414293f8

## pyenvインストール
pyenvとは複数のバージョンのpythonをインストールして管理できるツールになります。
ちなみに私のM1Macはpython3が入っていましたがこの機会にpyenvを導入してみます。

### 参考サイト
https://brew.sh/index_ja

以下pyenvインストールを進めていきます。

```install.sh
% which python3
/usr/bin/python3
% brew update
% brew install pyenv
% pyenv --version
```

バージョンが表示されたらインストールは完了です。
次にシェルに設定を追加します。以下zshで記載します。
下記コマンドを実行するとホームディレクトリにある.zshrcというファイルに設定が書き込まれていきます。

```setting.sh
% echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
% echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.zshrc
% echo 'eval "$(pyenv init -)"' >> ~/.zshrc
% cat ~/.zshrc
% source ~/.zshrc
```

catコマンドで設定が追記されていたらpyenv自体の設定完了です。
次に実際にpyenvを使ってpythonをインストールしてみましょう。

```install.sh
% pyenv install --list
% pyenv install -l | grep -v '[a-zA-Z]' | grep -e '\s3\.?*' | tail -1
% pyenv install $(pyenv install -l | grep -v '[a-zA-Z]' | grep -e '\s3\.?*' | tail -1)
```

上記はpyenvでインストールできるバージョンを確認
pyenvでインストールできる最新安定バージョンを確認
pyenvで最新安定バージョンをインストール
ということをおこなっています。

ただこのままですと以下のようにエラーになります。

```python.sh
% python -V
% pyenv: python: command not found
```

そこで以下のコマンドでグローバルのpythonコマンドにpyenvでインストールしたpythonを紐づけます。

```pyenv.sh
% pyenv global 3.10.7
% python -V
Python 3.10.7
% pyenv versions
```

pythonのバージョンが表示されたら完了です。

### 参考サイト
https://github.com/pyenv/pyenv#homebrew-in-macos
https://zenn.dev/unsoluble_sugar/articles/283ebf698c307c
https://qiita.com/m3y/items/45c7be319e401b24fca8

## virtualenvインストール
virtualenvはpythonの仮想環境です。
virtualenvをインストールする際にpipxというツールがあった方が環境をクリーンに保てるということが参考サイトに書いてあったのでまずはpipxをインストールします。
pipx自体はvirtualenvにpython製のアプリをインストールしグローバルから実行できるようにできるツールです。

```install.sh
% pipx list
zsh: command not found: pipx
% brew install pipx
% pipx ensurepath
% pipx --version
1.1.0
```

バージョンが表示されたらpipxのインストールが完了です。
次にpipxを使用してvirtualenvをインストールします。

```install.sh
% pipx install virtualenv
% virtualenv --help
zsh: command not found: virtualenv
```

ただこれだとエラーになってしまいますのでzshに認識してもらえるようパスを通します。

```settingpath.sh
% pipx ensurepath
% source .zshrc
% virtualenv --help
```

pipxコマンドでパスを通してくれます
zshの設定ファイルを再読み込みします。
helpが表示されたらvirtualenvの設定完了です。

### 参考サイト
https://virtualenv.pypa.io/en/latest/installation.html
https://pypa.github.io/pipx/

# eb-cliセットアップスクリプト実行
いよいよここからeb-cliのセットアップを進めていきます。
参考サイトのeb-cliのgithubのページをベースに進めていきます。

https://github.com/aws/aws-elastic-beanstalk-cli-setup

まずはgitのリポジトリをクローンするとのことでローカルPC内に作業用ディレクトリを任意の場所に作成します。

```mkdir.sh
% mkdir setup-eb-cli
```

GitHubからクローンします。

```gitclone.sh
% cd setup-eb-cli
% git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git
```

次にGitHubからダウンロードしたpythonスクリプトを実行します。

```python.sh
% python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py
```

インストールが終了すると最後にパスを通すコマンドが表示されていると思いますのでそちらを実行します。
私の場合はzshなのでzshのコマンドを実行します。

```setup.sh
2. Zsh:

       echo 'export PATH="/Users/MacOSUser/.ebcli-virtual-env/executables:$PATH"' >> ~/.zshenv && source ~/.zshenv

% echo 'export PATH="/Users/MacOSUser/.ebcli-virtual-env/executables:$PATH"' >> ~/.zshenv && source
```

これでebコマンドがグローバルに使えるようになります。

```eb.sh
% eb --version
EB CLI 3.20.3 (Python 3.10.)
```

# 参考サイト
https://github.com/aws/aws-elastic-beanstalk-cli-setup

# トラブルシューティング
zsh: command not found:というエラーが出た場合シェルスクリプトが違っている場合がありますので確認しましょう。

```shell.sh
% echo $SHELL
% cat /etc/shells
% chsh -s /bin/zsh
```

上記は現在のシェルを確認
インストールされているシェルを表示
zshに切り替える

というコマンド例です。

これらのシェルはソフトごとに設定されているので
ターミナル、iterm、phpstorm内のターミナルなどで
設定されているものが変わります。

コマンドが見つからないと言われる際は今どのソフトでどのシェルを使っているかを確認すると解決できるかもしれません。