自分用のcli(EB CLI)の主要なコマンドの整理のためのメモ。
まずは基本のコマンドとサンプルアプリケーションの作成
詳しくは公式を参照して下さい。
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/eb-cli3.html
アプリケーションの新規作成もしくは既存アプリケーションの利用
eb init
カレントディレクトリに対してBeanstalkの初期設定を行う
プロファイルを指定して実行したい場合は--profile [プロファイル名]
を付加して実行
eb init --profile manjiii
プロファイルの作成に関してはこの辺を記事を参考に。
ソースの存在しない空のディレクトリでの実行例
Pythonの環境を利用。この後は全てこのディレクトリで作業を行う
(ebコマンドは基本的にカレントディレクトリに対して行われる)
$ mkdir beanstalk-cli-test
$ cd beanstalk-cli-test
eb init実行
$ eb init --profile manjiii
まずはどのリージョンを使うのか聞かれるので選択
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) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
(default is 3): 9 #<-デフォルトで使用したいリージョンを指定
既存のアプリケーションが存在する場合それを使うか聞かれるので選択
Select an application to use
1) manjiii
2) [ Create new Application ]
(default is 2): 1 #<-使用したいアプリケーションを指定。新規なら2
使用するプラットフォームを聞かれるので選択
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
12) Packer
(default is 1): 3 #<-Pythonを指定
使用するバージョンを聞かれるので選択
Select a platform version.
1) Python 3.6
2) Python 3.4
3) Python 3.4 (Preconfigured - Docker)
4) Python 2.7
5) Python
(default is 1): 1 #<-Python 3.6を指定
ソース(コントロール)がないのでCodeCommitの設定できないけど続けるよーのメッセージが表示される
Cannot setup CodeCommit because there is no Source Control setup,
continuing with initialization
作成した環境にSSHする際に使用するキーペアでどれを使うか聞かれるので選択
Do you want to set up SSH for your instances?
(Y/n): y
Select a keypair.
1) XXXXXXXX
2) [ Create new KeyPair ]
(default is 1): 1 #<-設定してあるのでそれを指定。なければ2
initコマンドの終了後、ファイルの確認
.elasticbeanstalk/config.ymlが作成されている
$ tree -a
.
├── .elasticbeanstalk
│ └── config.yml
└── .gitignore
$ cat .elasticbeanstalk/config.yml
branch-defaults:
default:
environment: null
global:
application_name: manjiii
branch: null
default_ec2_keyname: XXXXXXXX
default_platform: Python 3.6
default_region: ap-northeast-1
include_git_submodules: true
instance_profile: null
platform_name: null
platform_version: null
profile: manjiii
repository: null
sc: null
workspace_type: Application
アプリケーション内に新しい環境を作成
eb create
テスト用の環境を作成してみる
$ eb create
作成する名前を聞かれるので入力
Enter Environment Name
(default is manjiii-dev):test-env
URLに使用するprefixを聞かれるので入力(後でブラウザで確認する時などのURLに使われる)
Enter DNS CNAME prefix
(default is test-env): #<- デフォルト使用でそのままenter
使用するロードバランサーを聞かれるので選択
Select a load balancer type
1) classic
2) application
3) network
(default is 2):2 #<- ALBを使用するので2、もしくはそのままenter
ソースがないからサンプル使う?と聞かれるのでYes(後で入れ替えれる)
NOTE: The current directory does not contain any source code. Elastic Beanstalk is launching the sample application instead.
Do you want to download the sample application into the current directory?
(Y/n): y
環境の作成が始まる
NFO: Downloading sample application to the current directory.
INFO: Download complete.
Environment details for: test-env
Application name: manjiii
Region: ap-northeast-1
Deployed Version: Sample Application
Environment ID: e-picm9u2ems
Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Python 3.6 running on 64bit Amazon Linux/2.8.3
Tier: WebServer-Standard-1.0
CNAME: test-env2.ap-northeast-1.elasticbeanstalk.com
Updated: 2019-XX-XX 08:18:36.607000+00:00
Printing Status:
2019-XX-XX 08:18:34 INFO createEnvironment is starting.
2019-XX-XX 08:18:36 INFO Using elasticbeanstalk-ap-northea
.....
数分かかるので落ち着いて待つ
作成終了
20XX-XX-XX 08:22:17 INFO Successfully launched environment: test-env
ファイルを確認
$ tree -a
.
├── .elasticbeanstalk
│ └── config.yml
├── .gitignore
├── application.py #<- サンプルが保存されれいる
└── cron.yaml #<- サンプルが保存されれいる
アプリケーション、環境の確認
eb list
-a で全てのアプリケーション
-v で詳細情報
先程のアプリケーション、環境ができたか確認してみる
$ eb list -va
Region: ap-northeast-1
Application: manjiii
Environments: 1
* test-env : ['i-028bfedXXXXXXXXXXX'] #<- [*]がついているのがデフォルト
ブラウザでの確認
eb open
$ eb open #<- デフォルト指定のものが開く。「test-env」をしてしても良い
#ブラウザが開いて「Congratulations」の画面が出ればOK
ssh接続する
eb open
eb ssh -i [インスタンス名]
インスタンスに接続
接続
自動的にec2-userでログインされる
$ eb ssh #< インスタンスが1台しかないのでインスタンス名を省略可
INFO: Attempting to open port 22.
INFO: SSH port 22 open.
INFO: Running ssh -i [init時に指定したキー]
ec2-user@XX.XXX.XXX.XXX
The authenticity of host 'XX.XXX.XXX.XXX (XX.XXX.XXX.XXX)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXX
Are you sure you want to continue connecting (yes/no)? yes #<- yes
Warning: Permanently added '13.230.181.206' (ECDSA) to the list of known hosts.
_____ _ _ _ ____ _ _ _
| ____| | __ _ ___| |_(_) ___| __ ) ___ __ _ _ __ ___| |_ __ _| | | __
| _| | |/ _` / __| __| |/ __| _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) | __/ (_| | | | \__ \ || (_| | | <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
Amazon Linux AMI
.....
[ec2-user@ip-XXX-XX-XX-XXX ~]$
デプロイされているファイルを確認
[ec2-user@ip-XXX-XX-XX-XXX ~]$ ls -l /opt/python/current/app/
合計 12
-rw-r--r-- 1 wsgi root 5065 4月 2 2015 application.py
-rw-r--r-- 1 wsgi root 84 4月 2 2015 cron.yaml
一旦終了
[ec2-user@ip-XXX-XX-XX-XXX ~]$ exit
デプロイ
eb deploy
先程のサンプルアプリケーションを変更してデプロイしてみる
sampleを編集
$ sed -i -e "s/Congratulations/Hello Elastic Beanstalk\!/g" application.py
#エディターで編集してもOK
デプロイ
$ eb deploy
Creating application version archive "app-19XXXX_175807".
Uploading manjiii/app-190505_175807.zip to S3. This may take a while.
Upload Complete.
.....
2019-XX-XX 08:58:39 INFO Environment update completed successfully.
デプロイされているか確認
$ eb open
#「Hello Elastic Beanstalk!」に変わって表示されていればOK
注意
今回は利用していないが、gitなどをSouceCont利用している時は、ローカル内で編集・保存しただけだとdeployされない。
その場合はcommitするか、ステージに上げて「--staged」オプションをつけてdeployする必要がある。
環境の終了
eb terminate
環境を関連するリソースも含め終了する
(使用しないのにそのままにしておくと時間で課金されるものもあるため忘れずに!)
eb terminate [環境名]
test-env を終了する
$ eb terminate test-env
確認の為、環境名の入力を求められるので入力
The environment "test-env" and all associated instances will be terminated.
To confirm, type the environment name: test-env #<- 入力
削除完了、削除確認
....
2019-XX-XX XX:XX:XX INFO terminateEnvironment completed successfully.
$ eb list -va
Region: ap-northeast-1
Application: manjiii
Environments: 0
一旦ここまで。
追記)
続きを作成しました。