Open7

Macで、ElasticBeanstalk環境にアクセスできるように環境構築する

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

やりたいこと

  • 新しいMacを買った。現状動いているEB環境にeb ssheb deployを行うために、環境構築を行う

環境

  • MacBook Pro チップはApple M2 Pro
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

EB CLIのインストール(その1、前提の環境構築)

pyenv経由でpythonを入れる

brewを入れる

% brew update
zsh: command not found: brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

結果

==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/MyName/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh
  • Next stepsの通り、2つのコマンドをそのままコピペし、brew helpを実行したら動いた!

pyenvに戻る

  • まずこれ
brew update
brew install pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
brew install openssl readline sqlite3 xz zlib tcl-tk
  • ついにpythonのインストール
    • バージョンはなんでもよさそうなので、READMEに書いてあるとおりにインストール
pyenv install 3.10.4
  • 利用するpyenvのpythonのバージョンを設定する。参考
pyenv global 3.10.4
  • バージョン確認
% python -V          
Python 3.10.4

間違ったトラブルシューティング

  • 以下のようにpythonのバージョンが出ないとき
% python --version
zsh: command not found: python
  • これで解決を試みようとするのは間違い。pyenvで入れたバージョンにならなくなる。これに従ってzshにパスを通すこと。
% python -V
Python 3.9.6 // 本当は3.10.4のはず

virtualenvのインストール

python -m pip install --user virtualenv
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

EB CLIのインストール(その2、EB CLI本体)

git clone https://github.com/aws/aws-elastic-beanstalk-cli-setup.git
  • Install/Upgrade the EB CLI
% python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

***********************************
1. Locating virtualenv installation
***********************************
ERROR: Could not find and "virtualenv" installed. Ensurevirtualenv is installed and that it is in PATH before executingthis script.

******************************************
2. Creating exclusive virtualenv for EBCLI
******************************************
/bin/sh: virtualenv: command not found

なにー。

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

Virtualenvの問題に再度あたる

  • ls /Users/MyName/.local/lib/python3.10/site-packages/virtualenvで、この中にbinがないというのがよくわからない。。
  • いや!binは別のところにあった!
ls /Users/MyName/.local/bin/virtualenv.  //これ!!!
  • こいつのPATHを通す
% echo 'export PATH="/Users/MyName/.local/bin:$PATH"' >> ~/.zshrc
% source ~/.zshrc 
  • 動いた!
% virtualenv --version
virtualenv 20.21.0 from /Users/MyName/.local/lib/python3.10/site-packages/virtualenv/__init__.py
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

EB CLIのインストール(その2、EB CLI本体)

  • 2回目の挑戦!!
python ./aws-elastic-beanstalk-cli-setup/scripts/ebcli_installer.py

できた!!

***************
6. Finishing up
***************
Success!

    Note: To complete installation, ensure `eb` is in PATH. You can ensure this by executing:

    1. Bash:

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

    2. Zsh:

       echo 'export PATH="/Users/MyName/.ebcli-virtual-env/executables:$PATH"' >> ~/.zshenv && source ~/.zshenv
  • インストールの最後に言われたこちらのコマンドも入力する
echo 'export PATH="/Users/MyName/.ebcli-virtual-env/executables:$PATH"' >> ~/.zshenv && source ~/.zshenv
  • できたもよう!
% eb --version
EB CLI 3.20.5 (Python 3.10.4 (main, Mar 22 2023, 01:22:51) [Clang 14.0.0 (clang-1400.0.29.202)])
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

AWS CLIのインストール

  • 公式doc
    • GUIからの方法でいけた!
% aws --version
aws-cli/2.11.6 Python/3.11.2 Darwin/22.3.0 exe/x86_64 prompt/off

ECRにpushできるようにする

  • まだ何も設定されていないのでアクセスできないはず
% aws ecr get-login-password --region ap-northeast-x | docker login --username AWS --password-stdin xxxxxxxxxxx.dkr.ecr.ap-northeast-x.amazonaws.com

Unable to locate credentials. You can configure credentials by running "aws configure".
Error: Cannot perform an interactive login from a non TTY device
 % aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key                <not set>             None    None
secret_key                <not set>             None    None
    region                <not set>             None    None

AWSの設定をする

  • 以前使っていたPCに保存されているIAMを確認する(上記のaws configure list コマンドで)
  • cat ~/.aws/credentialsコマンドで表示可能
  • 設定する(参考
% aws configure
AWS Access Key ID [None]: *****************
AWS Secret Access Key [None]: ***************
Default region name [None]: ap-northeast-x
Default output format [None]: json
  • これでログイン可能になる
% aws ecr get-login-password --region ap-northeast-x | docker login --username AWS --password-stdin xxxxxxxxxxxx.dkr.ecr.ap-northeast-x.amazonaws.com
Login Succeeded
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

ローカルとEB環境の紐付け

  • キーが無い。
% eb ssh EnvName
ERROR: NotFoundError - The EB CLI cannot find your SSH key file for keyname "KeyName". Your SSH key file must be located in the .ssh folder in your home directory.
  • キーを.ssh下に配置した。その後アクセスすると、別のエラーが発生
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/Name/.ssh/keyName' are too open.
It is required that your private key files are NOT accessible by others.
% chmod 600 ~/.ssh/keyName
  • 接続できた!