はじめに
こんにちは、荻野です。
今回はAWS Elastic Beanstalkの小ネタです。Elastic Beanstalkを利用時に、CloneやAutoScalingなどによりEC2のグローバルIP が変わってしまいsshログインに困ることはありませんか? それ、EB CLIなら解決できます。今更な感じもありますが、便利なCLIなのでご紹介します。
What is EB CLI??
一言でいえば、Elastic Beanstalkを便利に扱うためのCLIです。aws
コマンドにもelasticbeanstalk
サブコマンドがありますが、もっと簡単便利にElastic Beanstalkに触れ合えます。
Install EB CLI
ドキュメントを参考にインストールしましょう。今回はOS Xでしたがpip
でインストールしました。他にもHomebrew
でもインストールできますが、pip
の方が最新版をいち早く利用できるようです。
pip
利用時のインストール手順は以下です。
# pip install pip install --user --upgrade awsebcli # PATHを通します # ~/.bash_profile に以下を追記します(パスは環境により異なります) export PATH="$PATH:~/Library/Python/2.7/bin" # eb コマンドの補完を有効にします # ~/.bashrc に以下を追記します(パスは環境により異なります) source ~/Library/Python/2.7/bin/eb_completion.bash # 現在のセッションで有効化します source ~/.bash_profile # Version確認 $ eb --version EB CLI 3.10.0 (Python 2.7.1) # eb コマンドの補完が有効か確認 $ eb //タブを2回押します abort create init local platform setenv swap use config events labs logs printenv ssh terminate console health list open scale status upgrade
以上でインストール完了です。
使ってみる
今回は、すでに以下のElasticBeanstalkアプリケーションが作成されていることを前提として設定を進めます。
HelloWorldというアプリケーションに、developとstagingの2環境が存在す構成です。
- Application
- HelloWorld
- Environment
- develop
- ELB + EC2 x 2
- staging
- ELB + EC2 x 2
- develop
このアプリケーションのssh key-pairにはhello-world.pem
が設定されています。
このkeypairは~/.ssh/
にhello-world.pem
として保存しておいてください。keypairの保存場所はsshアクセスする際に非常に重要な項目なのでご注意ください。
それでは、EB CLIのセッティングを始めます。
まずはアプリケーションのプロジェクトディレクトリに移動します。
$ cd ${PROJECT_DIR}
EB CLIの初期設定を行います
$ eb init # リージョンを選択します Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) 8) ap-southeast-2 : Asia Pacific (Sydney) 9) ap-northeast-1 : Asia Pacific (Tokyo) 10) ap-northeast-2 : Asia Pacific (Seoul) 11) sa-east-1 : South America (Sao Paulo) 12) cn-north-1 : China (Beijing) 13) us-east-2 : US East (Ohio) 14) ca-central-1 : Canada (Central) 15) eu-west-2 : EU (London) (default is 3): 1 # N. Virginiaを選択しました # アプリケーションを選択します Select an application to use 1) HelloWorld 2) [ Create new Application ] (default is 1): 1 # HelloWorld アプリケーションを選択しました # デフォルトの環境を選択します Select the default environment. You can change this later by typing "eb use [environment_name]". 1) staging 2) develop (default is 1): 2 # develop環境を選択しました
以上で初期設定は完了です。簡単です。
環境の一覧を見る場合はこうです。*
が付いているものが現在のデフォルトの環境になります。
$ eb list * develop staging
デフォルトの環境をstaging環境に変更する場合はこうです。
$ eb use staging
デフォルトの環境がstaging環境に変更されました。
$ eb list develop * staging
では本題のsshですが、こうです。この場合は現在デフォルトとして設定されているstaging環境に存在するEC2にログインできます。
$ eb ssh # sshログインするEC2を選択します。ELB配下に2台存在するため2つインスタンスが表示されています。 Select an instance to ssh into 1) i-0d04080e073ba23e2 2) i-04ec606ef8974dd27 (default is 1): 1 # ログインできました! _____ _ _ _ ____ _ _ _ | ____| | __ _ ___| |_(_) ___| __ ) ___ __ _ _ __ ___| |_ __ _| | | __ | _| | |/ _` / __| __| |/ __| _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ / | |___| | (_| \__ \ |_| | (__| |_) | __/ (_| | | | \__ \ || (_| | | < |_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\ [ec2-user@ip-xxx-xxx-xxx-xxx ~]$
もしdevelop環境のEC2にログインする場合は環境名を渡します。
$ eb ssh develop # sshログインするEC2を選択します。先ほどとは異なるIDが表示されています。 Select an instance to ssh into 1) i-03e33951450f21376 2) i-03f223e9b917facf6 (default is 1): 1 # ログインできました! _____ _ _ _ ____ _ _ _ | ____| | __ _ ___| |_(_) ___| __ ) ___ __ _ _ __ ___| |_ __ _| | | __ | _| | |/ _` / __| __| |/ __| _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ / | |___| | (_| \__ \ |_| | (__| |_) | __/ (_| | | | \__ \ || (_| | | < |_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\ [ec2-user@ip-xxx-xxx-xxx-xxx ~]$
なお、こちらに記載がありますがsshログインのためにEB CLIは以下のように動作をしますので、意図せずセキュリティポリシーに反しないようご注意ください。
環境のセキュリティグループでポート 22 に関するルールが指定されていない場合、このコマンドは、0.0.0.0/0(すべての IP アドレス)からの受信トラフィックについてポート 22 を自動的に開きます。セキュリティを高めるために、制限された CIDR 範囲に対してのみポート 22 を開くよう環境のセキュリティグループを設定してある場合は、EB CLI はその設定を尊重し、セキュリティグループに対するあらゆる変更を破棄します。この動作をオーバーライドし、EB CLI ですべての受信トラフィックに対して強制的にポート 22 を開くには、
--force
オプションを使用します。
おわりに
新しいネタではないですがEB CLI
のご紹介でした。もしもまだEB CLI
を試したことがなければ、ぜひ試してみてください!
それでは、よいElastic Beanstalkライフをお送りください!