Open7
Macで、ElasticBeanstalk環境にアクセスできるように環境構築する
やりたいこと
- 新しいMacを買った。現状動いているEB環境に
eb ssh
やeb deploy
を行うために、環境構築を行う
環境
- MacBook Pro チップはApple M2 Pro
EB CLIのインストール(その1、前提の環境構築)
- https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3-install.html
- GitHubのセットアップスクリプトから行う
pyenv経由でpythonを入れる
brewを入れる
% brew update
zsh: command not found: brew
- 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
% python -V
Python 3.9.6 // 本当は3.10.4のはず
virtualenvのインストール
- 公式docの、via pipの方に従った
python -m pip install --user virtualenv
EB CLIのインストール(その2、EB CLI本体)
- 公式手順の通りに進めていく
- まずgitのclone
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
なにー。
Virtualenvの問題に再度あたる
-
ls /Users/MyName/.local/lib/python3.10/site-packages/virtualenv
で、この中にbinがないというのがよくわからない。。 - いや!binは別のところにあった!
- なおこれは、virtualenvをpipxでインストールしようとしたときに、警告が出てきたことによって気づいた
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
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)])
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
ローカルと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
- 接続できた!